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()) : "";
|
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
|
bool AndroidConfig::isCmdlineSdkToolsInstalled() const
|
||||||
{
|
{
|
||||||
QString toolPath("cmdline-tools/latest/bin/sdkmanager");
|
QString toolPath("cmdline-tools/latest/bin/sdkmanager");
|
||||||
|
@@ -91,7 +91,6 @@ public:
|
|||||||
|
|
||||||
static QStringList apiLevelNamesFor(const SdkPlatformList &platforms);
|
static QStringList apiLevelNamesFor(const SdkPlatformList &platforms);
|
||||||
static QString apiLevelNameFor(const SdkPlatform *platform);
|
static QString apiLevelNameFor(const SdkPlatform *platform);
|
||||||
static int platformNameToApiLevel(const QString &platformName);
|
|
||||||
|
|
||||||
Utils::FilePath sdkLocation() const;
|
Utils::FilePath sdkLocation() const;
|
||||||
void setSdkLocation(const Utils::FilePath &sdkLocation);
|
void setSdkLocation(const Utils::FilePath &sdkLocation);
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#include "androidconfigurations.h"
|
#include "androidconfigurations.h"
|
||||||
#include "androidconstants.h"
|
#include "androidconstants.h"
|
||||||
#include "androidmanager.h"
|
#include "androidmanager.h"
|
||||||
|
#include "avdmanageroutputparser.h"
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
@@ -691,7 +692,7 @@ AndroidSdkPackage *SdkManagerOutputParser::parsePlatform(const QStringList &data
|
|||||||
SdkPlatform *platform = nullptr;
|
SdkPlatform *platform = nullptr;
|
||||||
GenericPackageData packageData;
|
GenericPackageData packageData;
|
||||||
if (parseAbstractData(packageData, data, 2, "Platform")) {
|
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) {
|
if (apiLevel == -1) {
|
||||||
qCDebug(sdkManagerLog) << "Platform: Cannot parse api level:"<< data;
|
qCDebug(sdkManagerLog) << "Platform: Cannot parse api level:"<< data;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@@ -711,7 +712,7 @@ QPair<SystemImage *, int> SdkManagerOutputParser::parseSystemImage(const QString
|
|||||||
QPair <SystemImage *, int> result(nullptr, -1);
|
QPair <SystemImage *, int> result(nullptr, -1);
|
||||||
GenericPackageData packageData;
|
GenericPackageData packageData;
|
||||||
if (parseAbstractData(packageData, data, 4, "System-image")) {
|
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) {
|
if (apiLevel == -1) {
|
||||||
qCDebug(sdkManagerLog) << "System-image: Cannot parse api level:"<< data;
|
qCDebug(sdkManagerLog) << "System-image: Cannot parse api level:"<< data;
|
||||||
return result;
|
return result;
|
||||||
|
@@ -34,6 +34,7 @@
|
|||||||
#include <utils/variant.h>
|
#include <utils/variant.h>
|
||||||
|
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
|
#include <QRegularExpression>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@@ -98,7 +99,7 @@ static Utils::optional<AndroidDeviceInfo> parseAvd(const QStringList &deviceInfo
|
|||||||
QSettings avdInfo(avdInfoFile.toString(), QSettings::IniFormat);
|
QSettings avdInfo(avdInfoFile.toString(), QSettings::IniFormat);
|
||||||
value = avdInfo.value(avdInfoTargetKey).toString();
|
value = avdInfo.value(avdInfoTargetKey).toString();
|
||||||
if (!value.isEmpty())
|
if (!value.isEmpty())
|
||||||
avd.sdk = AndroidConfig::platformNameToApiLevel(value);
|
avd.sdk = platformNameToApiLevel(value);
|
||||||
else
|
else
|
||||||
qCDebug(avdOutputParserLog)
|
qCDebug(avdOutputParserLog)
|
||||||
<< "Avd Parsing: Cannot find sdk API:" << avdInfoFile.toString();
|
<< "Avd Parsing: Cannot find sdk API:" << avdInfoFile.toString();
|
||||||
@@ -164,5 +165,27 @@ AndroidDeviceInfoList parseAvdList(const QString &output, QStringList *avdErrorP
|
|||||||
return avdList;
|
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 Internal
|
||||||
} // namespace Android
|
} // namespace Android
|
||||||
|
@@ -31,6 +31,7 @@ namespace Internal {
|
|||||||
const char avdManufacturerError[] = "no longer exists as a device";
|
const char avdManufacturerError[] = "no longer exists as a device";
|
||||||
|
|
||||||
AndroidDeviceInfoList parseAvdList(const QString &output, QStringList *avdErrorPaths);
|
AndroidDeviceInfoList parseAvdList(const QString &output, QStringList *avdErrorPaths);
|
||||||
|
int platformNameToApiLevel(const QString &platformName);
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Android
|
} // namespace Android
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
add_qtc_test(tst_avdmanageroutputparser
|
add_qtc_test(tst_avdmanageroutputparser
|
||||||
DEPENDS Utils
|
DEPENDS Utils
|
||||||
PLUGIN_DEPENDS Android
|
|
||||||
INCLUDES
|
INCLUDES
|
||||||
"${PROJECT_SOURCE_DIR}/src/plugins"
|
"${PROJECT_SOURCE_DIR}/src/plugins"
|
||||||
"${PROJECT_SOURCE_DIR}/src/plugins/android"
|
"${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/avdmanageroutputparser.h"
|
||||||
"${PROJECT_SOURCE_DIR}/src/plugins/android/androiddeviceinfo.cpp"
|
"${PROJECT_SOURCE_DIR}/src/plugins/android/androiddeviceinfo.cpp"
|
||||||
"${PROJECT_SOURCE_DIR}/src/plugins/android/androiddeviceinfo.h"
|
"${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
|
qtc_add_resources(tst_avdmanageroutputparser tst_avdmanageroutputparser_rcc
|
||||||
|
Reference in New Issue
Block a user