From e38efabea963da0507396e79198f0c8f67bcdc2b Mon Sep 17 00:00:00 2001 From: Yasser Grimes Date: Fri, 23 Sep 2022 15:38:56 +0300 Subject: [PATCH] McuSupport: support reading packages defaultValues depending on OS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit default values can vary between windows and linux so when it is the case a json object can be specified to describe the default values for both. Change-Id: Ifd3e4225ba0e1b1760f93ecea9cfafa4545c3404 Reviewed-by: Reviewed-by: Piotr Mućko Reviewed-by: hjk --- src/plugins/mcusupport/mcusupportsdk.cpp | 13 ++++++++++++- src/plugins/mcusupport/test/unittest.cpp | 10 ++++++++++ src/plugins/mcusupport/test/unittest.h | 2 ++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index 04ce9a38770..cea595d2d89 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -629,12 +629,23 @@ static PackageDescription parsePackage(const QJsonObject &cmakeEntry) [&](const QVariant &version) { return version.toString(); }); + + //Parse the default value depending on the operating system + QString defaultPathString; + if (cmakeEntry["defaultValue"].isObject()) + defaultPathString + = cmakeEntry["defaultValue"] + .toObject()[HostOsInfo::isWindowsHost() ? QString("windows") : QString("unix")] + .toString(""); + else + defaultPathString = cmakeEntry["defaultValue"].toString(); + return {cmakeEntry["label"].toString(), cmakeEntry["envVar"].toString(), cmakeEntry["cmakeVar"].toString(), cmakeEntry["description"].toString(), cmakeEntry["setting"].toString(), - FilePath::fromUserInput(cmakeEntry["defaultValue"].toString()), + FilePath::fromUserInput(defaultPathString), FilePath::fromUserInput(cmakeEntry["validation"].toString()), versions, parseVersionDetection(cmakeEntry), diff --git a/src/plugins/mcusupport/test/unittest.cpp b/src/plugins/mcusupport/test/unittest.cpp index 8b34b95951c..0e441a2d60b 100644 --- a/src/plugins/mcusupport/test/unittest.cpp +++ b/src/plugins/mcusupport/test/unittest.cpp @@ -1444,4 +1444,14 @@ void McuSupportTest::test_legacy_createThirdPartyPackage() QVERIFY(qunsetenv(envVar.toLocal8Bit())); } +void McuSupportTest::test_defaultValueForEachOperationSystem() +{ + const auto packageDescription = parseDescriptionJson(armgcc_mimxrt1050_evk_freertos_json); + auto default_path_entry = packageDescription.platform.entries[0].defaultPath.toString(); + + if (HostOsInfo::isWindowsHost()) + QCOMPARE(QString("%{Env:ROOT}/nxp/MCUXpressoIDE*"), default_path_entry); + else + QCOMPARE(QString("/usr/local/mcuxpressoide"), default_path_entry); +}; } // namespace McuSupport::Internal::Test diff --git a/src/plugins/mcusupport/test/unittest.h b/src/plugins/mcusupport/test/unittest.h index 36b835c6e7d..732d636f3ac 100644 --- a/src/plugins/mcusupport/test/unittest.h +++ b/src/plugins/mcusupport/test/unittest.h @@ -95,6 +95,8 @@ private slots: void test_legacy_createThirdPartyPackage_data(); void test_legacy_createThirdPartyPackage(); + void test_defaultValueForEachOperationSystem(); + private: QVersionNumber currentQulVersion{2, 0}; PackageMock *freeRtosPackage{new PackageMock};