From 9bc9fb5a0d9a235b06356fc03d50dab0719d905a Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 2 Feb 2022 16:32:24 +0100 Subject: [PATCH] Fix avdmanageroutputparser test - There is no PLUGIN_DEPENDS for tests, and it wouldn't work anyhow because of duplicated symbols. It was interpreted as a dependency and the test disabled because no such target exists. - Move the platformNameToApiLevel(...) function to avdmanageroutputparser.h to break the dependency to a lot of Android support code. Amends 78da7e2922274c429bb677abf63157b8ae679d03 Change-Id: I6933684a76e5291d415c72388caa3df2bee7cbfb Reviewed-by: Reviewed-by: Alessandro Portale --- src/plugins/android/androidconfigurations.cpp | 22 ---------------- src/plugins/android/androidconfigurations.h | 1 - src/plugins/android/androidsdkmanager.cpp | 5 ++-- .../android/avdmanageroutputparser.cpp | 25 ++++++++++++++++++- src/plugins/android/avdmanageroutputparser.h | 1 + tests/auto/android/CMakeLists.txt | 3 --- 6 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 34383bad3a4..9de48da0ee5 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -473,28 +473,6 @@ QString AndroidConfig::apiLevelNameFor(const SdkPlatform *platform) QString("android-%1").arg(platform->apiLevel()) : ""; } -int AndroidConfig::platformNameToApiLevel(const QString &platformName) -{ - int apiLevel = -1; - static const QRegularExpression re("(android-)(?[0-9A-Z]{1,})", - QRegularExpression::CaseInsensitiveOption); - QRegularExpressionMatch match = re.match(platformName); - if (match.hasMatch()) { - QString apiLevelStr = match.captured("apiLevel"); - bool isUInt; - apiLevel = apiLevelStr.toUInt(&isUInt); - if (!isUInt) { - if (apiLevelStr == 'Q') - apiLevel = 29; - else if (apiLevelStr == 'R') - apiLevel = 30; - else if (apiLevelStr == 'S') - apiLevel = 31; - } - } - return apiLevel; -} - bool AndroidConfig::isCmdlineSdkToolsInstalled() const { QString toolPath("cmdline-tools/latest/bin/sdkmanager"); diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 701e10190e9..7492ae0f2a3 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -91,7 +91,6 @@ public: static QStringList apiLevelNamesFor(const SdkPlatformList &platforms); static QString apiLevelNameFor(const SdkPlatform *platform); - static int platformNameToApiLevel(const QString &platformName); Utils::FilePath sdkLocation() const; void setSdkLocation(const Utils::FilePath &sdkLocation); diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp index 16c75a8e622..15636de0789 100644 --- a/src/plugins/android/androidsdkmanager.cpp +++ b/src/plugins/android/androidsdkmanager.cpp @@ -28,6 +28,7 @@ #include "androidconfigurations.h" #include "androidconstants.h" #include "androidmanager.h" +#include "avdmanageroutputparser.h" #include #include @@ -691,7 +692,7 @@ AndroidSdkPackage *SdkManagerOutputParser::parsePlatform(const QStringList &data SdkPlatform *platform = nullptr; GenericPackageData packageData; if (parseAbstractData(packageData, data, 2, "Platform")) { - const int apiLevel = AndroidConfig::platformNameToApiLevel(packageData.headerParts.at(1)); + const int apiLevel = platformNameToApiLevel(packageData.headerParts.at(1)); if (apiLevel == -1) { qCDebug(sdkManagerLog) << "Platform: Cannot parse api level:"<< data; return nullptr; @@ -711,7 +712,7 @@ QPair SdkManagerOutputParser::parseSystemImage(const QString QPair result(nullptr, -1); GenericPackageData packageData; if (parseAbstractData(packageData, data, 4, "System-image")) { - const int apiLevel = AndroidConfig::platformNameToApiLevel(packageData.headerParts.at(1)); + const int apiLevel = platformNameToApiLevel(packageData.headerParts.at(1)); if (apiLevel == -1) { qCDebug(sdkManagerLog) << "System-image: Cannot parse api level:"<< data; return result; diff --git a/src/plugins/android/avdmanageroutputparser.cpp b/src/plugins/android/avdmanageroutputparser.cpp index 2cb8a9ac0b1..8140719aee2 100644 --- a/src/plugins/android/avdmanageroutputparser.cpp +++ b/src/plugins/android/avdmanageroutputparser.cpp @@ -34,6 +34,7 @@ #include #include +#include #include namespace { @@ -98,7 +99,7 @@ static Utils::optional parseAvd(const QStringList &deviceInfo QSettings avdInfo(avdInfoFile.toString(), QSettings::IniFormat); value = avdInfo.value(avdInfoTargetKey).toString(); if (!value.isEmpty()) - avd.sdk = AndroidConfig::platformNameToApiLevel(value); + avd.sdk = platformNameToApiLevel(value); else qCDebug(avdOutputParserLog) << "Avd Parsing: Cannot find sdk API:" << avdInfoFile.toString(); @@ -164,5 +165,27 @@ AndroidDeviceInfoList parseAvdList(const QString &output, QStringList *avdErrorP return avdList; } +int platformNameToApiLevel(const QString &platformName) +{ + int apiLevel = -1; + static const QRegularExpression re("(android-)(?[0-9A-Z]{1,})", + QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(platformName); + if (match.hasMatch()) { + QString apiLevelStr = match.captured("apiLevel"); + bool isUInt; + apiLevel = apiLevelStr.toUInt(&isUInt); + if (!isUInt) { + if (apiLevelStr == 'Q') + apiLevel = 29; + else if (apiLevelStr == 'R') + apiLevel = 30; + else if (apiLevelStr == 'S') + apiLevel = 31; + } + } + return apiLevel; +} + } // namespace Internal } // namespace Android diff --git a/src/plugins/android/avdmanageroutputparser.h b/src/plugins/android/avdmanageroutputparser.h index e5a50beae34..3788e6079d8 100644 --- a/src/plugins/android/avdmanageroutputparser.h +++ b/src/plugins/android/avdmanageroutputparser.h @@ -31,6 +31,7 @@ namespace Internal { const char avdManufacturerError[] = "no longer exists as a device"; AndroidDeviceInfoList parseAvdList(const QString &output, QStringList *avdErrorPaths); +int platformNameToApiLevel(const QString &platformName); } // namespace Internal } // namespace Android diff --git a/tests/auto/android/CMakeLists.txt b/tests/auto/android/CMakeLists.txt index bf132fe599a..8f328fe98e2 100644 --- a/tests/auto/android/CMakeLists.txt +++ b/tests/auto/android/CMakeLists.txt @@ -1,6 +1,5 @@ add_qtc_test(tst_avdmanageroutputparser DEPENDS Utils - PLUGIN_DEPENDS Android INCLUDES "${PROJECT_SOURCE_DIR}/src/plugins" "${PROJECT_SOURCE_DIR}/src/plugins/android" @@ -10,8 +9,6 @@ add_qtc_test(tst_avdmanageroutputparser "${PROJECT_SOURCE_DIR}/src/plugins/android/avdmanageroutputparser.h" "${PROJECT_SOURCE_DIR}/src/plugins/android/androiddeviceinfo.cpp" "${PROJECT_SOURCE_DIR}/src/plugins/android/androiddeviceinfo.h" - "${PROJECT_SOURCE_DIR}/src/plugins/android/androidmanager.cpp" - "${PROJECT_SOURCE_DIR}/src/plugins/android/androidmanager.h" ) qtc_add_resources(tst_avdmanageroutputparser tst_avdmanageroutputparser_rcc