forked from qt-creator/qt-creator
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 78da7e2922
Change-Id: I6933684a76e5291d415c72388caa3df2bee7cbfb
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
committed by
Alessandro Portale
parent
1e34d6ee22
commit
9bc9fb5a0d
@@ -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-)(?<apiLevel>[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");
|
||||
|
@@ -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);
|
||||
|
@@ -28,6 +28,7 @@
|
||||
#include "androidconfigurations.h"
|
||||
#include "androidconstants.h"
|
||||
#include "androidmanager.h"
|
||||
#include "avdmanageroutputparser.h"
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/qtcassert.h>
|
||||
@@ -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<SystemImage *, int> SdkManagerOutputParser::parseSystemImage(const QString
|
||||
QPair <SystemImage *, int> 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;
|
||||
|
@@ -34,6 +34,7 @@
|
||||
#include <utils/variant.h>
|
||||
|
||||
#include <QLoggingCategory>
|
||||
#include <QRegularExpression>
|
||||
#include <QSettings>
|
||||
|
||||
namespace {
|
||||
@@ -98,7 +99,7 @@ static Utils::optional<AndroidDeviceInfo> 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-)(?<apiLevel>[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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user