diff options
Diffstat (limited to 'tests/auto/blackbox')
-rw-r--r-- | tests/auto/blackbox/blackbox-android.pro | 18 | ||||
-rw-r--r-- | tests/auto/blackbox/blackbox-android.qbs | 22 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/multiple-apks-per-project.qbs (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/multiple-apks-per-project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/product1.qbs (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/product1.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/AndroidManifest.xml (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/AndroidManifest.xml) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/java/io/qt/dummy/Dummy.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/java/io/qt/dummy/Dummy.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/jni/lib1.cpp (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/jni/lib1.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/jni/lib2.cpp (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/jni/lib2.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/res/values/strings.xml (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/res/values/strings.xml) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/product2.qbs (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/product2.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/AndroidManifest.xml (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/AndroidManifest.xml) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/java/io/qt/dummy/Dummy.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/java/io/qt/dummy/Dummy.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/jni/lib1.cpp (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/jni/lib1.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/jni/lib2.cpp (renamed from tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/jni/lib2.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/io/qbs/lib3/lib3.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/io/qbs/lib3/lib3.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib4.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib4.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib5.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib5.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib6.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib6.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib7.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib7.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib8.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib8.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/multiple-libs-per-apk.qbs (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/multiple-libs-per-apk.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/AndroidManifest.xml (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/AndroidManifest.xml) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/java/io/qt/dummy/Dummy.java (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/java/io/qt/dummy/Dummy.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/jni/lib1.cpp (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/jni/lib1.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/jni/lib2.cpp (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/jni/lib2.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/res/values/strings.xml (renamed from tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/res/values/strings.xml) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/no-native/no-native.qbs (renamed from tests/auto/blackbox/testdata-java/android/no-native/no-native.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/teapot/teapot.qbs (renamed from tests/auto/blackbox/testdata-java/android/teapot/teapot.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackboxandroid.cpp | 153 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackboxandroid.h | 52 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackboxjava.cpp | 103 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackboxjava.h | 5 |
32 files changed, 245 insertions, 108 deletions
diff --git a/tests/auto/blackbox/blackbox-android.pro b/tests/auto/blackbox/blackbox-android.pro new file mode 100644 index 000000000..d27550301 --- /dev/null +++ b/tests/auto/blackbox/blackbox-android.pro @@ -0,0 +1,18 @@ +TARGET = tst_blackbox-android + +HEADERS = tst_blackboxandroid.h tst_blackboxbase.h +SOURCES = tst_blackboxandroid.cpp tst_blackboxbase.cpp +OBJECTS_DIR = android +MOC_DIR = $${OBJECTS_DIR}-moc + +include(../auto.pri) + +DATA_DIRS = testdata-android ../find + +for(data_dir, DATA_DIRS) { + files = $$files($$PWD/$$data_dir/*, true) + win32:files ~= s|\\\\|/|g + for(file, files):!exists($$file/*):FILES += $$file +} + +OTHER_FILES += $$FILES diff --git a/tests/auto/blackbox/blackbox-android.qbs b/tests/auto/blackbox/blackbox-android.qbs new file mode 100644 index 000000000..4579ec862 --- /dev/null +++ b/tests/auto/blackbox/blackbox-android.qbs @@ -0,0 +1,22 @@ +import qbs + +QbsAutotest { + testName: "blackbox-android" + Depends { name: "qbs_app" } + Depends { name: "qbs-setup-toolchains" } + Group { + name: "testdata" + prefix: "testdata-android/" + files: ["**/*"] + fileTags: [] + } + files: [ + "../shared.h", + "tst_blackboxbase.cpp", + "tst_blackboxbase.h", + "tst_blackboxandroid.cpp", + "tst_blackboxandroid.h", + ] + // TODO: Use Utilities.cStringQuote + cpp.defines: base.concat(['SRCDIR="' + path + '"']) +} diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/multiple-apks-per-project.qbs b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/multiple-apks-per-project.qbs index 3d03c309a..3d03c309a 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/multiple-apks-per-project.qbs +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/multiple-apks-per-project.qbs diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/product1.qbs b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/product1.qbs index 0ddd7526c..0ddd7526c 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/product1.qbs +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/product1.qbs diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/AndroidManifest.xml b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/AndroidManifest.xml index 1468b52f6..1468b52f6 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/AndroidManifest.xml +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/AndroidManifest.xml diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/java/io/qt/dummy/Dummy.java b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/java/io/qt/dummy/Dummy.java index 149af081f..149af081f 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/java/io/qt/dummy/Dummy.java +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/java/io/qt/dummy/Dummy.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/jni/lib1.cpp b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/jni/lib1.cpp index 474897da9..474897da9 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/jni/lib1.cpp +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/jni/lib1.cpp diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/jni/lib2.cpp b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/jni/lib2.cpp index de580ab09..de580ab09 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/jni/lib2.cpp +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/jni/lib2.cpp diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/res/values/strings.xml b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/res/values/strings.xml index 949748954..949748954 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product1/src/main/res/values/strings.xml +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product1/src/main/res/values/strings.xml diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/product2.qbs b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/product2.qbs index f0418a425..f0418a425 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/product2.qbs +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/product2.qbs diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/AndroidManifest.xml b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/AndroidManifest.xml index 4e5cdf977..4e5cdf977 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/AndroidManifest.xml +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/AndroidManifest.xml diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/java/io/qt/dummy/Dummy.java b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/java/io/qt/dummy/Dummy.java index 149af081f..149af081f 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/java/io/qt/dummy/Dummy.java +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/java/io/qt/dummy/Dummy.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/jni/lib1.cpp b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/jni/lib1.cpp index 474897da9..474897da9 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/jni/lib1.cpp +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/jni/lib1.cpp diff --git a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/jni/lib2.cpp b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/jni/lib2.cpp index de580ab09..de580ab09 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-apks-per-project/product2/src/main/jni/lib2.cpp +++ b/tests/auto/blackbox/testdata-android/multiple-apks-per-project/product2/src/main/jni/lib2.cpp diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/io/qbs/lib3/lib3.java b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/io/qbs/lib3/lib3.java index 09ce152c3..09ce152c3 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/io/qbs/lib3/lib3.java +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/io/qbs/lib3/lib3.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib4.java b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib4.java index 7b1de6c8b..7b1de6c8b 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib4.java +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib4.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib5.java b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib5.java index 92ab6dee2..92ab6dee2 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib5.java +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib5.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib6.java b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib6.java index c524967ee..c524967ee 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib6.java +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib6.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib7.java b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib7.java index 110bab22c..110bab22c 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib7.java +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib7.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib8.java b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib8.java index e0cb448f0..e0cb448f0 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/lib8.java +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/lib8.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/multiple-libs-per-apk.qbs b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/multiple-libs-per-apk.qbs index d76a41232..d76a41232 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/multiple-libs-per-apk.qbs +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/multiple-libs-per-apk.qbs diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/AndroidManifest.xml b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/AndroidManifest.xml index 639d3a647..639d3a647 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/AndroidManifest.xml +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/AndroidManifest.xml diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/java/io/qt/dummy/Dummy.java b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/java/io/qt/dummy/Dummy.java index e98fb2166..e98fb2166 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/java/io/qt/dummy/Dummy.java +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/java/io/qt/dummy/Dummy.java diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/jni/lib1.cpp b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/jni/lib1.cpp index 474897da9..474897da9 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/jni/lib1.cpp +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/jni/lib1.cpp diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/jni/lib2.cpp b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/jni/lib2.cpp index de580ab09..de580ab09 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/jni/lib2.cpp +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/jni/lib2.cpp diff --git a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/res/values/strings.xml b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/res/values/strings.xml index 297dfa7fa..297dfa7fa 100644 --- a/tests/auto/blackbox/testdata-java/android/multiple-libs-per-apk/src/main/res/values/strings.xml +++ b/tests/auto/blackbox/testdata-android/multiple-libs-per-apk/src/main/res/values/strings.xml diff --git a/tests/auto/blackbox/testdata-java/android/no-native/no-native.qbs b/tests/auto/blackbox/testdata-android/no-native/no-native.qbs index 2909adc0c..2909adc0c 100644 --- a/tests/auto/blackbox/testdata-java/android/no-native/no-native.qbs +++ b/tests/auto/blackbox/testdata-android/no-native/no-native.qbs diff --git a/tests/auto/blackbox/testdata-java/android/teapot/teapot.qbs b/tests/auto/blackbox/testdata-android/teapot/teapot.qbs index 47952d3d3..47952d3d3 100644 --- a/tests/auto/blackbox/testdata-java/android/teapot/teapot.qbs +++ b/tests/auto/blackbox/testdata-android/teapot/teapot.qbs diff --git a/tests/auto/blackbox/tst_blackboxandroid.cpp b/tests/auto/blackbox/tst_blackboxandroid.cpp new file mode 100644 index 000000000..b8436764b --- /dev/null +++ b/tests/auto/blackbox/tst_blackboxandroid.cpp @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "tst_blackboxandroid.h" + +#include "../shared.h" +#include <tools/profile.h> + +#include <QtCore/qjsondocument.h> +#include <QtCore/qtemporarydir.h> + +using qbs::Profile; + +QMap<QString, QString> TestBlackboxAndroid::findAndroid(int *status, const QString &profile) +{ + QTemporaryDir temp; + QDir::setCurrent(testDataDir + "/find"); + QbsRunParameters params = QStringList({"-f", "find-android.qbs", "qbs.architecture:x86"}); + params.profile = profile; + params.buildDirectory = temp.path(); + const int res = runQbs(params); + if (status) + *status = res; + QFile file(temp.path() + "/" + relativeProductBuildDir("find-android") + + "/android.json"); + if (!file.open(QIODevice::ReadOnly)) + return QMap<QString, QString> { }; + const auto tools = QJsonDocument::fromJson(file.readAll()).toVariant().toMap(); + return QMap<QString, QString> { + {"sdk", QDir::fromNativeSeparators(tools["sdk"].toString())}, + {"sdk-build-tools-dx", QDir::fromNativeSeparators(tools["sdk-build-tools-dx"].toString())}, + {"ndk", QDir::fromNativeSeparators(tools["ndk"].toString())}, + {"ndk-samples", QDir::fromNativeSeparators(tools["ndk-samples"].toString())}, + }; +} + +TestBlackboxAndroid::TestBlackboxAndroid() + : TestBlackboxBase(SRCDIR "/testdata-android", "blackbox-android") +{ +} + +void TestBlackboxAndroid::validateTestProfile() +{ + const SettingsPtr s = settings(); + Profile p("qbs_autotests-android", s.get()); + if (!p.exists()) + QSKIP("No Android test profile"); +} + +void TestBlackboxAndroid::android() +{ + QFETCH(QString, projectDir); + QFETCH(QStringList, productNames); + QFETCH(QList<int>, apkFileCounts); + + const SettingsPtr s = settings(); + Profile p("qbs_autotests-android", s.get()); + int status; + const auto androidPaths = findAndroid(&status, p.name()); + QCOMPARE(status, 0); + + const auto ndkPath = androidPaths["ndk"]; + const auto ndkSamplesPath = androidPaths["ndk-samples"]; + static const QStringList ndkSamplesDirs = QStringList() << "teapot" << "no-native"; + if (!ndkPath.isEmpty() && !QFileInfo(ndkSamplesPath).isDir() + && ndkSamplesDirs.contains(projectDir)) + 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 (int i = 0; i < productNames.count(); ++i) { + const QString productName = productNames.at(i); + 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())); + QCOMPARE(jar.readAllStandardOutput().trimmed().split('\n').count(), apkFileCounts.at(i)); + } + + 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() +{ + const SettingsPtr s = settings(); + const Profile p("qbs_autotests-android", s.get()); + const int archCount = p.value(QLatin1String("qbs.architectures")).toStringList().count(); + + QTest::addColumn<QString>("projectDir"); + QTest::addColumn<QStringList>("productNames"); + QTest::addColumn<QList<int>>("apkFileCounts"); + QTest::newRow("teapot") << "teapot" << QStringList("com.sample.teapot") + << (QList<int>() << (13 + 3*archCount)); + QTest::newRow("no native") << "no-native" + << QStringList("com.example.android.basicmediadecoder") << (QList<int>() << 22); + QTest::newRow("multiple libs") << "multiple-libs-per-apk" << QStringList("twolibs") + << (QList<int>() << (6 + 4 * archCount)); + QTest::newRow("multiple apks") << "multiple-apks-per-project" + << (QStringList() << "twolibs1" << "twolibs2") + << QList<int>({6 + archCount * 3 + 2, 5 + archCount * 4}); +} + +QTEST_MAIN(TestBlackboxAndroid) diff --git a/tests/auto/blackbox/tst_blackboxandroid.h b/tests/auto/blackbox/tst_blackboxandroid.h new file mode 100644 index 000000000..3b095ee00 --- /dev/null +++ b/tests/auto/blackbox/tst_blackboxandroid.h @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef TST_BLACKBOX_H +#define TST_BLACKBOX_H + +#include "tst_blackboxbase.h" + +class TestBlackboxAndroid : public TestBlackboxBase +{ + Q_OBJECT + +public: + TestBlackboxAndroid(); + +protected: + void validateTestProfile() override; + +private slots: + void android(); + void android_data(); + +private: + QMap<QString, QString> findAndroid(int *status, const QString &profile); +}; + +#endif // TST_BLACKBOX_H diff --git a/tests/auto/blackbox/tst_blackboxjava.cpp b/tests/auto/blackbox/tst_blackboxjava.cpp index a10b736c4..f3b999dc6 100644 --- a/tests/auto/blackbox/tst_blackboxjava.cpp +++ b/tests/auto/blackbox/tst_blackboxjava.cpp @@ -38,113 +38,10 @@ using qbs::Internal::HostOsInfo; using qbs::Profile; -QMap<QString, QString> TestBlackboxJava::findAndroid(int *status, const QString &profile) -{ - QTemporaryDir temp; - QDir::setCurrent(testDataDir + "/find"); - QbsRunParameters params = QStringList({"-f", "find-android.qbs", "qbs.architecture:x86"}); - params.profile = profile; - params.buildDirectory = temp.path(); - const int res = runQbs(params); - if (status) - *status = res; - QFile file(temp.path() + "/" + relativeProductBuildDir("find-android") - + "/android.json"); - if (!file.open(QIODevice::ReadOnly)) - return QMap<QString, QString> { }; - const auto tools = QJsonDocument::fromJson(file.readAll()).toVariant().toMap(); - return QMap<QString, QString> { - {"sdk", QDir::fromNativeSeparators(tools["sdk"].toString())}, - {"sdk-build-tools-dx", QDir::fromNativeSeparators(tools["sdk-build-tools-dx"].toString())}, - {"ndk", QDir::fromNativeSeparators(tools["ndk"].toString())}, - {"ndk-samples", QDir::fromNativeSeparators(tools["ndk-samples"].toString())}, - }; -} - TestBlackboxJava::TestBlackboxJava() : TestBlackboxBase (SRCDIR "/testdata-java", "blackbox-java") { } -void TestBlackboxJava::android() -{ - QFETCH(QString, projectDir); - QFETCH(QStringList, productNames); - QFETCH(QList<int>, apkFileCounts); - - const SettingsPtr s = settings(); - Profile p("qbs_autotests-android", s.get()); - if (!p.exists()) - QSKIP("No Android test profile"); - int status; - const auto androidPaths = findAndroid(&status, p.name()); - QCOMPARE(status, 0); - - const auto ndkPath = androidPaths["ndk"]; - const auto ndkSamplesPath = androidPaths["ndk-samples"]; - static const QStringList ndkSamplesDirs = QStringList() << "teapot" << "no-native"; - if (!ndkPath.isEmpty() && !QFileInfo(ndkSamplesPath).isDir() - && ndkSamplesDirs.contains(projectDir)) - QSKIP("NDK samples directory not present"); - - QDir::setCurrent(testDataDir + "/android/" + projectDir); - QbsRunParameters params(QStringList { "--command-echo-mode", "command-line", - "modules.Android.ndk.platform:android-21" }); - params.profile = p.name(); - QCOMPARE(runQbs(params), 0); - for (int i = 0; i < productNames.count(); ++i) { - const QString productName = productNames.at(i); - 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())); - QCOMPARE(jar.readAllStandardOutput().trimmed().split('\n').count(), apkFileCounts.at(i)); - } - - 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 TestBlackboxJava::android_data() -{ - const SettingsPtr s = settings(); - const Profile p("qbs_autotests-android", s.get()); - const int archCount = p.value(QLatin1String("qbs.architectures")).toStringList().count(); - - QTest::addColumn<QString>("projectDir"); - QTest::addColumn<QStringList>("productNames"); - QTest::addColumn<QList<int>>("apkFileCounts"); - QTest::newRow("teapot") << "teapot" << QStringList("com.sample.teapot") - << (QList<int>() << (13 + 3*archCount)); - QTest::newRow("no native") << "no-native" - << QStringList("com.example.android.basicmediadecoder") << (QList<int>() << 22); - QTest::newRow("multiple libs") << "multiple-libs-per-apk" << QStringList("twolibs") - << (QList<int>() << (6 + 4 * archCount)); - QTest::newRow("multiple apks") << "multiple-apks-per-project" - << (QStringList() << "twolibs1" << "twolibs2") - << QList<int>({6 + archCount * 3 + 2, 5 + archCount * 4}); -} - static QProcessEnvironment processEnvironmentWithCurrentDirectoryInLibraryPath() { QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); diff --git a/tests/auto/blackbox/tst_blackboxjava.h b/tests/auto/blackbox/tst_blackboxjava.h index f85259f46..68d8a7f80 100644 --- a/tests/auto/blackbox/tst_blackboxjava.h +++ b/tests/auto/blackbox/tst_blackboxjava.h @@ -39,15 +39,10 @@ public: TestBlackboxJava(); private slots: - void android(); - void android_data(); void java(); void javaDependencyTracking(); void javaDependencyTracking_data(); void javaDependencyTrackingInnerClass(); - -private: - QMap<QString, QString> findAndroid(int *status, const QString &profile); }; #endif // TST_BLACKBOX_H |