diff --git a/src/plugins/mcusupport/mcutargetfactory.cpp b/src/plugins/mcusupport/mcutargetfactory.cpp index 1f6868274d0..73359910f08 100644 --- a/src/plugins/mcusupport/mcutargetfactory.cpp +++ b/src/plugins/mcusupport/mcutargetfactory.cpp @@ -82,12 +82,15 @@ QPair McuTargetFactory::createTargets(const McuTargetDescript if (!toolchain || !toolchainFile) continue; Packages targetPackages = createPackages(desc); + McuToolChainPackagePtr toolchainPtr{toolchain}; + targetPackages.insert({toolchainPtr}); + targetPackages.unite({toolchainFile}); packages.unite(targetPackages); mcuTargets.append(McuTargetPtr{new McuTarget{QVersionNumber::fromString(desc.qulVersion), platform, deduceOperatingSystem(desc), targetPackages, - McuToolChainPackagePtr{toolchain}, + toolchainPtr, toolchainFile, colorDepth}}); } diff --git a/src/plugins/mcusupport/test/unittest.cpp b/src/plugins/mcusupport/test/unittest.cpp index 50d66a99d6d..6358e154db4 100644 --- a/src/plugins/mcusupport/test/unittest.cpp +++ b/src/plugins/mcusupport/test/unittest.cpp @@ -233,6 +233,16 @@ void verifyBoardSdk(const McuPackagePtr &boardSdk, McuSupportTest::McuSupportTest() : targetFactory{settingsMockPtr} + , compilerDescription{armGccLabel, armGccEnvVar, Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE, armGccLabel, armGccDirectorySetting, {}, {}, {}, false} + , toochainFileDescription{armGccLabel, armGccEnvVar, Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE, armGccLabel, armGccDirectorySetting, {}, {}, {}, false} + , targetDescription { + "2.0.1", + "2", + platformDescription, + Sdk::McuTargetDescription::Toolchain{armGcc, {}, compilerDescription, toochainFileDescription}, + Sdk::PackageDescription{}, + Sdk::McuTargetDescription::FreeRTOS{}, + } , toolchainPackagePtr{new McuToolChainPackage{ settingsMockPtr, {}, // label @@ -274,15 +284,6 @@ McuSupportTest::McuSupportTest() void McuSupportTest::initTestCase() { - targetDescription = Sdk::McuTargetDescription{ - "2.0.1", - "2", - platformDescription, - Sdk::McuTargetDescription::Toolchain{}, - Sdk::PackageDescription{}, - Sdk::McuTargetDescription::FreeRTOS{}, - }; - EXPECT_CALL(*freeRtosPackage, environmentVariableName()) .WillRepeatedly(Return(QString{freeRtosEnvVar})); EXPECT_CALL(*freeRtosPackage, cmakeVariableName()) @@ -573,16 +574,41 @@ void McuSupportTest::test_createTargets() targetDescription.toolchain.id = armGcc; const auto [targets, packages]{targetFactory.createTargets(targetDescription, qtForMcuSdkPath)}; - QVERIFY(!targets.empty()); + QCOMPARE(targets.size(), 1); const McuTargetPtr target{targets.at(0)}; - QCOMPARE(target->colorDepth(), colorDepth); - const auto &tgtPackages{target->packages()}; - QVERIFY(!tgtPackages.empty()); + QCOMPARE(target->colorDepth(), colorDepth); + + const auto &tgtPackages{target->packages()}; + QCOMPARE(tgtPackages.size(), 4); + + // target should contain freertos package QVERIFY(anyOf(tgtPackages, [](const McuPackagePtr &pkg) { return (pkg->environmentVariableName() == nxp1064FreeRtosEnvVar && pkg->cmakeVariableName() == freeRtosCMakeVar && pkg->label() == id); })); + + // all packages should contain target's tooclhain compiler package. + QVERIFY(anyOf(packages, [](const McuPackagePtr &pkg) { + return (pkg->cmakeVariableName() == Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE); + })); + + // target should contain tooclhain copmiler package. + QVERIFY(anyOf(tgtPackages, [](const McuPackagePtr &pkg) { + return (pkg->cmakeVariableName() + == Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE /*and pkg->disconnect*/); + })); + + // all packages should contain target's tooclhain file package. + QVERIFY(anyOf(packages, [](const McuPackagePtr &pkg) { + return (pkg->cmakeVariableName() == Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE); + })); + + // target should contain tooclhain file package. + QVERIFY(anyOf(tgtPackages, [](const McuPackagePtr &pkg) { + return (pkg->cmakeVariableName() + == Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE /*and pkg->disconnect*/); + })); } void McuSupportTest::test_createPackages() diff --git a/src/plugins/mcusupport/test/unittest.h b/src/plugins/mcusupport/test/unittest.h index 91844f087e7..8f02d0c3589 100644 --- a/src/plugins/mcusupport/test/unittest.h +++ b/src/plugins/mcusupport/test/unittest.h @@ -102,6 +102,8 @@ private: QSharedPointer settingsMockPtr{new SettingsHandlerMock}; McuTargetFactory targetFactory; + Sdk::PackageDescription compilerDescription; + Sdk::PackageDescription toochainFileDescription; Sdk::McuTargetDescription targetDescription; McuToolChainPackagePtr toolchainPackagePtr; McuToolChainPackagePtr armGccToolchainPackagePtr;