From 88342a6bba5199ff222550ac22c002b8865fca51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Mu=C4=87ko?= Date: Thu, 3 Mar 2022 17:43:41 +0100 Subject: [PATCH] McuSupport: chop RTOS environment variable suffix Change-Id: Iba35246af403a00bd0f750e3769e22a5010825eb Reviewed-by: Alessandro Portale Reviewed-by: --- src/plugins/mcusupport/mcuhelpers.cpp | 9 +++++++++ src/plugins/mcusupport/mcuhelpers.h | 1 + src/plugins/mcusupport/mcusupport.qbs | 2 +- src/plugins/mcusupport/mcusupportoptions.h | 3 ++- src/plugins/mcusupport/mcusupportsdk.cpp | 8 ++++---- src/plugins/mcusupport/mcusupportsdk.h | 4 ++-- src/plugins/mcusupport/test/unittest.cpp | 20 +++++++++++++++++++- src/plugins/mcusupport/test/unittest.h | 2 ++ 8 files changed, 40 insertions(+), 9 deletions(-) diff --git a/src/plugins/mcusupport/mcuhelpers.cpp b/src/plugins/mcusupport/mcuhelpers.cpp index 04b15cd2fd1..e727f76d094 100644 --- a/src/plugins/mcusupport/mcuhelpers.cpp +++ b/src/plugins/mcusupport/mcuhelpers.cpp @@ -26,6 +26,8 @@ #include "mcuhelpers.h" #include "mcutargetdescription.h" +#include + namespace McuSupport { Internal::McuTarget::OS deduceOperatingSystem(const Internal::Sdk::McuTargetDescription &desc) @@ -39,4 +41,11 @@ Internal::McuTarget::OS deduceOperatingSystem(const Internal::Sdk::McuTargetDesc return OS::BareMetal; } +QString removeRtosSuffix(const QString &environmentVariable) +{ + static const QRegularExpression freeRtosSuffix{R"(_FREERTOS_\w+)"}; + QString result = environmentVariable; + return result.replace(freeRtosSuffix, QString{}); +} + } //namespace McuSupport diff --git a/src/plugins/mcusupport/mcuhelpers.h b/src/plugins/mcusupport/mcuhelpers.h index f70b6c33ade..a97e536a9d9 100644 --- a/src/plugins/mcusupport/mcuhelpers.h +++ b/src/plugins/mcusupport/mcuhelpers.h @@ -36,5 +36,6 @@ struct McuTargetDescription; } Internal::McuTarget::OS deduceOperatingSystem(const Internal::Sdk::McuTargetDescription &); +QString removeRtosSuffix(const QString &environmentVariable); }; // namespace McuSupport diff --git a/src/plugins/mcusupport/mcusupport.qbs b/src/plugins/mcusupport/mcusupport.qbs index f62b39c3d24..ba91c5e7f14 100644 --- a/src/plugins/mcusupport/mcusupport.qbs +++ b/src/plugins/mcusupport/mcusupport.qbs @@ -51,8 +51,8 @@ QtcPlugin { "mcutargetdescription.h", "mcukitinformation.cpp", "mcukitinformation.h", - "mcuhelpers.h", "mcuhelpers.cpp", + "mcuhelpers.h", ] Group { diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h index e14c883ae72..a65ec4298ca 100644 --- a/src/plugins/mcusupport/mcusupportoptions.h +++ b/src/plugins/mcusupport/mcusupportoptions.h @@ -51,8 +51,9 @@ namespace Internal { class McuAbstractPackage; -struct McuSdkRepository +class McuSdkRepository { +public: Packages packages; Targets mcuTargets; void deletePackagesAndTargets(); diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index dfc6e4a0f74..e4c1f2b48cf 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -24,6 +24,7 @@ ****************************************************************************/ #include "mcusupportsdk.h" +#include "mcuhelpers.h" #include "mcukitmanager.h" #include "mcupackage.h" #include "mcusupportconstants.h" @@ -149,7 +150,7 @@ McuAbstractPackage *createFreeRTOSSourcesPackage(const QString &envVar, const FilePath &boardSdkDir, const QString &freeRTOSBoardSdkSubDir) { - const QString envVarPrefix = envVar.chopped(int(strlen("_FREERTOS_DIR"))); + const QString envVarPrefix = removeRtosSuffix(envVar); FilePath defaultPath; if (qEnvironmentVariableIsSet(envVar.toLatin1())) @@ -160,8 +161,7 @@ McuAbstractPackage *createFreeRTOSSourcesPackage(const QString &envVar, return new McuPackage(QString::fromLatin1("FreeRTOS Sources (%1)").arg(envVarPrefix), defaultPath, {}, // detection path - QString::fromLatin1("FreeRTOSSourcePackage_%1") - .arg(envVarPrefix), // settings key + QString{Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(envVarPrefix), "FREERTOS_DIR", // cmake var envVar, // env var "https://freertos.org"); // download url @@ -480,7 +480,7 @@ static QFileInfoList targetDescriptionFiles(const Utils::FilePath &dir) static QList parsePackages(const QJsonArray &cmakeEntries) { QList result; - for (const auto& cmakeEntryRef : cmakeEntries) { + for (const auto &cmakeEntryRef : cmakeEntries) { const QJsonObject cmakeEntry{cmakeEntryRef.toObject()}; result.push_back({cmakeEntry[ID].toString(), cmakeEntry["envVar"].toString(), diff --git a/src/plugins/mcusupport/mcusupportsdk.h b/src/plugins/mcusupport/mcusupportsdk.h index ee084664b7d..7a0d0fdce0e 100644 --- a/src/plugins/mcusupport/mcusupportsdk.h +++ b/src/plugins/mcusupport/mcusupportsdk.h @@ -36,10 +36,10 @@ namespace McuSupport::Internal { constexpr int MAX_COMPATIBILITY_VERSION{1}; -class McuSdkRepository; class McuAbstractPackage; -class McuToolChainPackage; +class McuSdkRepository; class McuTarget; +class McuToolChainPackage; namespace Sdk { diff --git a/src/plugins/mcusupport/test/unittest.cpp b/src/plugins/mcusupport/test/unittest.cpp index deeda8576f3..7c11a1de186 100644 --- a/src/plugins/mcusupport/test/unittest.cpp +++ b/src/plugins/mcusupport/test/unittest.cpp @@ -59,7 +59,7 @@ const QString nxp1064FreeRtosEnvVar{"IMXRT1064_FREERTOS_DIR"}; const QString nxp1170FreeRtosEnvVar{"EVK_MIMXRT1170_FREERTOS_PATH"}; const QString stm32f7FreeRtosEnvVar{"STM32F7_FREERTOS_DIR"}; const QString stm32f7{"STM32F7"}; -const QString nxp1170{"EVK_MIMXRT1170_"}; +const QString nxp1170{"EVK_MIMXRT1170"}; const QString nxp1050{"IMXRT1050"}; const QString nxp1064{"IMXRT1064"}; const QStringList jsonFiles{armgcc_nxp_1050_json, armgcc_nxp_1064_json}; @@ -296,4 +296,22 @@ void McuSupportTest::test_createPackages() QVERIFY(not packages.empty()); } +void McuSupportTest::test_removeRtosSuffix_data() +{ + QTest::addColumn("freeRtosEnvVar"); + QTest::addColumn("expectedEnvVarWithoutSuffix"); + + QTest::newRow("nxp1050") << nxp1050FreeRtosEnvVar << nxp1050; + QTest::newRow("nxp1064") << nxp1064FreeRtosEnvVar << nxp1064; + QTest::newRow("nxp1170") << nxp1170FreeRtosEnvVar << nxp1170; + QTest::newRow("stm32f7") << stm32f7FreeRtosEnvVar << stm32f7; +} + +void McuSupportTest::test_removeRtosSuffix() +{ + QFETCH(QString, freeRtosEnvVar); + QFETCH(QString, expectedEnvVarWithoutSuffix); + QCOMPARE(removeRtosSuffix(freeRtosEnvVar), expectedEnvVarWithoutSuffix); +} + } // namespace McuSupport::Internal::Test diff --git a/src/plugins/mcusupport/test/unittest.h b/src/plugins/mcusupport/test/unittest.h index 54fbf6e5f14..735df77457e 100644 --- a/src/plugins/mcusupport/test/unittest.h +++ b/src/plugins/mcusupport/test/unittest.h @@ -60,6 +60,8 @@ private slots: void test_createTargetsTheNewWay(); void test_createPackages(); void test_parseCmakeEntries(); + void test_removeRtosSuffix_data(); + void test_removeRtosSuffix(); private: QVersionNumber currentQulVersion{2, 0};