McuSupport: Automatic memory management for mcu sdk

Fix crash while automatically restoring kits during startup.
Change packages container to set to avoid duplicates.
Use RAII for McuSdkRepository.

Change-Id: I4b3f4156f0bc770c8a5ea8a171b1f22f6ffb8f96
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Piotr Mućko
2022-03-28 16:42:51 +02:00
parent 652f130fae
commit a3fbfac814
19 changed files with 229 additions and 265 deletions

View File

@@ -96,34 +96,34 @@ void McuSupportTest::test_parseCmakeEntries()
void McuSupportTest::test_addNewKit()
{
const QString cmakeVar = "CMAKE_SDK";
McuPackage sdkPackage{"sdk", // label
{}, // defaultPath
{}, // detectionPath
"sdk", // settingsKey
cmakeVar, // cmake var
{}}; // env var
McuPackagePtr sdkPackage{new McuPackage{"sdk", // label
{}, // defaultPath
{}, // detectionPath
"sdk", // settingsKey
cmakeVar, // cmake var
{}}}; // env var
ProjectExplorer::Kit kit;
McuToolChainPackage
toolchainPackage{{}, // label
{}, // defaultPath
{}, // detectionPath
{}, // settingsKey
McuToolChainPackage::ToolChainType::Unsupported, // toolchain type
{}, // cmake var name
{}}; // env var name
McuToolChainPackagePtr toolchainPackage{
new McuToolChainPackage{{}, // label
{}, // defaultPath
{}, // detectionPath
{}, // settingsKey
McuToolChainPackage::ToolChainType::Unsupported, // toolchain type
{}, // cmake var name
{}}}; // env var name
const McuTarget::Platform platform{id, name, vendor};
McuTarget mcuTarget{currentQulVersion, // version
platform, // platform
McuTarget::OS::FreeRTOS, // os
{&sdkPackage}, // packages
&toolchainPackage}; // toolchain packages
{sdkPackage}, // packages
toolchainPackage}; // toolchain packages
auto &kitManager{*KitManager::instance()};
QSignalSpy kitAddedSpy(&kitManager, &KitManager::kitAdded);
auto *newKit{McuKitManager::newKit(&mcuTarget, &sdkPackage)};
auto *newKit{McuKitManager::newKit(&mcuTarget, sdkPackage)};
QVERIFY(newKit != nullptr);
QCOMPARE(kitAddedSpy.count(), 1);
@@ -265,10 +265,11 @@ void McuSupportTest::test_createTargetsTheNewWay()
Sdk::McuTargetFactory targetFactory{};
const auto [targets, packages]{targetFactory.createTargets(description)};
QVERIFY(not targets.empty());
QCOMPARE(targets.at(0)->colorDepth(), colorDepth);
const auto &tgtPackages{targets.at(0)->packages()};
const McuTargetPtr target{*targets.constBegin()};
QCOMPARE(target->colorDepth(), colorDepth);
const auto &tgtPackages{target->packages()};
QVERIFY(not tgtPackages.empty());
const auto rtosPackage{tgtPackages.first()};
const auto rtosPackage{*tgtPackages.constBegin()};
QCOMPARE(rtosPackage->environmentVariableName(), nxp1064FreeRtosEnvVar);
}