McuSupport: unittests for legacy 3rd party package creation

Change-Id: I83e3daf1f718066b20798aae2cf19836529b1f56
Reviewed-by: Dawid Śliwa <dawid.sliwa@qt.io>
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-08-25 15:40:26 +02:00
parent cd08759fb6
commit d76ba33381
4 changed files with 91 additions and 6 deletions

View File

@@ -358,7 +358,7 @@ McuToolChainPackagePtr createIarToolChainPackage(const SettingsHandler::Ptr &set
versionDetector)};
}
static McuPackagePtr createStm32CubeProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
McuPackagePtr createStm32CubeProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
{
FilePath defaultPath;
const QString cubePath = "STMicroelectronics/STM32Cube/STM32CubeProgrammer";
@@ -392,7 +392,7 @@ static McuPackagePtr createStm32CubeProgrammerPackage(const SettingsHandler::Ptr
)};
}
static McuPackagePtr createMcuXpressoIdePackage(const SettingsHandler::Ptr &settingsHandler)
McuPackagePtr createMcuXpressoIdePackage(const SettingsHandler::Ptr &settingsHandler)
{
const char envVar[] = "MCUXpressoIDE_PATH";
@@ -427,7 +427,7 @@ static McuPackagePtr createMcuXpressoIdePackage(const SettingsHandler::Ptr &sett
"https://www.nxp.com/mcuxpresso/ide")}; // download url
}
static McuPackagePtr createCypressProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
McuPackagePtr createCypressProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
{
const char envVar[] = "CYPRESS_AUTO_FLASH_UTILITY_DIR";
@@ -455,7 +455,7 @@ static McuPackagePtr createCypressProgrammerPackage(const SettingsHandler::Ptr &
envVar)}; // env var
}
static McuPackagePtr createRenesasProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
McuPackagePtr createRenesasProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
{
const char envVar[] = "RENESAS_FLASH_PROGRAMMER_PATH";
@@ -704,8 +704,7 @@ McuTargetDescription parseDescriptionJson(const QByteArray &data)
toolchainPackage,
toolchainFilePackage},
boardSdkPackage,
{freeRTOS.value("envVar").toString(),
freeRtosPackage}};
{freeRTOS.value("envVar").toString(), freeRtosPackage}};
}
// https://doc.qt.io/qtcreator/creator-developing-mcu.html#supported-qt-for-mcus-sdks

View File

@@ -54,5 +54,10 @@ McuPackagePtr createFreeRTOSSourcesPackage(const SettingsHandler::Ptr &settingsH
const QString &envVar,
const Utils::FilePath &boardSdkDir);
McuPackagePtr createStm32CubeProgrammerPackage(const SettingsHandler::Ptr &);
McuPackagePtr createRenesasProgrammerPackage(const SettingsHandler::Ptr &);
McuPackagePtr createCypressProgrammerPackage(const SettingsHandler::Ptr &);
McuPackagePtr createMcuXpressoIdePackage(const SettingsHandler::Ptr &);
} // namespace Legacy
} // namespace McuSupport::Internal

View File

@@ -1284,4 +1284,78 @@ void McuSupportTest::test_resolveCmakeVariablesInDefaultPath()
QCOMPARE(toolchainFilePkg->defaultPath().toString(), expectedPkgPath);
}
void McuSupportTest::test_legacy_createThirdPartyPackage_data()
{
const QString defaultToolPath{"/opt/biz/foo"};
const char xpressoIdeSetting[]{"MCUXpressoIDE"};
const char xpressoIdeCmakeVar[]{"MCUXPRESSO_IDE_PATH"};
const char xpressoIdeEnvVar[]{"MCUXpressoIDE_PATH"};
const char stmCubeProgrammerSetting[]{"Stm32CubeProgrammer"};
const QString stmCubeProgrammerPath{defaultToolPath + "/bin"};
const char renesasProgrammerSetting[]{"RenesasFlashProgrammer"};
const char renesasProgrammerCmakeVar[]{"RENESAS_FLASH_PROGRAMMER_PATH"};
const QString renesasProgrammerEnvVar{renesasProgrammerCmakeVar};
const char cypressProgrammerSetting[]{"CypressAutoFlashUtil"};
const char cypressProgrammerCmakeVar[]{"INFINEON_AUTO_FLASH_UTILITY_DIR"};
const char cypressProgrammerEnvVar[]{"CYPRESS_AUTO_FLASH_UTILITY_DIR"};
QTest::addColumn<PackageCreator>("creator");
QTest::addColumn<QString>("path");
QTest::addColumn<QString>("defaultPath");
QTest::addColumn<QString>("setting");
QTest::addColumn<QString>("cmakeVar");
QTest::addColumn<QString>("envVar");
QTest::newRow("mcuXpresso") << PackageCreator{[this]() {
return Legacy::createMcuXpressoIdePackage(settingsMockPtr);
}} << defaultToolPath << defaultToolPath
<< xpressoIdeSetting << xpressoIdeCmakeVar << xpressoIdeEnvVar;
QTest::newRow("stmCubeProgrammer") << PackageCreator{[this]() {
return Legacy::createStm32CubeProgrammerPackage(settingsMockPtr);
}} << stmCubeProgrammerPath << defaultToolPath
<< stmCubeProgrammerSetting << empty << empty;
QTest::newRow("renesasProgrammer") << PackageCreator{[this]() {
return Legacy::createRenesasProgrammerPackage(settingsMockPtr);
}} << defaultToolPath << defaultToolPath
<< renesasProgrammerSetting << renesasProgrammerCmakeVar
<< renesasProgrammerEnvVar;
QTest::newRow("cypressProgrammer") << PackageCreator{[this]() {
return Legacy::createCypressProgrammerPackage(settingsMockPtr);
}} << defaultToolPath << defaultToolPath
<< cypressProgrammerSetting << cypressProgrammerCmakeVar
<< cypressProgrammerEnvVar;
}
void McuSupportTest::test_legacy_createThirdPartyPackage()
{
QFETCH(PackageCreator, creator);
QFETCH(QString, path);
QFETCH(QString, defaultPath);
QFETCH(QString, setting);
QFETCH(QString, cmakeVar);
QFETCH(QString, envVar);
if (!envVar.isEmpty())
QVERIFY(qputenv(envVar.toLocal8Bit(), defaultPath.toLocal8Bit()));
EXPECT_CALL(*settingsMockPtr, getPath(QString{setting}, _, _))
.Times(2)
.WillRepeatedly(Return(FilePath::fromUserInput(defaultPath)));
McuPackagePtr thirdPartyPacakge{creator()};
QVERIFY(thirdPartyPacakge);
QCOMPARE(thirdPartyPacakge->settingsKey(), setting);
QCOMPARE(thirdPartyPacakge->environmentVariableName(), envVar);
QCOMPARE(thirdPartyPacakge->path().toString(), path);
if (!envVar.isEmpty())
QVERIFY(qunsetenv(envVar.toLocal8Bit()));
}
} // namespace McuSupport::Internal::Test

View File

@@ -92,6 +92,9 @@ private slots:
void test_resolveEnvironmentVariablesInDefaultPath();
void test_resolveCmakeVariablesInDefaultPath();
void test_legacy_createThirdPartyPackage_data();
void test_legacy_createThirdPartyPackage();
private:
QVersionNumber currentQulVersion{2, 0};
PackageMock *freeRtosPackage{new PackageMock};
@@ -112,6 +115,10 @@ private:
McuTarget::Platform platform;
McuTarget mcuTarget;
ProjectExplorer::Kit kit;
}; // class McuSupportTest
using PackageCreator = std::function<McuPackagePtr()>;
} // namespace McuSupport::Internal::Test
Q_DECLARE_METATYPE(McuSupport::Internal::Test::PackageCreator);