forked from qt-creator/qt-creator
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:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user