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)};
|
versionDetector)};
|
||||||
}
|
}
|
||||||
|
|
||||||
static McuPackagePtr createStm32CubeProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
|
McuPackagePtr createStm32CubeProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
|
||||||
{
|
{
|
||||||
FilePath defaultPath;
|
FilePath defaultPath;
|
||||||
const QString cubePath = "STMicroelectronics/STM32Cube/STM32CubeProgrammer";
|
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";
|
const char envVar[] = "MCUXpressoIDE_PATH";
|
||||||
|
|
||||||
@@ -427,7 +427,7 @@ static McuPackagePtr createMcuXpressoIdePackage(const SettingsHandler::Ptr &sett
|
|||||||
"https://www.nxp.com/mcuxpresso/ide")}; // download url
|
"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";
|
const char envVar[] = "CYPRESS_AUTO_FLASH_UTILITY_DIR";
|
||||||
|
|
||||||
@@ -455,7 +455,7 @@ static McuPackagePtr createCypressProgrammerPackage(const SettingsHandler::Ptr &
|
|||||||
envVar)}; // env var
|
envVar)}; // env var
|
||||||
}
|
}
|
||||||
|
|
||||||
static McuPackagePtr createRenesasProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
|
McuPackagePtr createRenesasProgrammerPackage(const SettingsHandler::Ptr &settingsHandler)
|
||||||
{
|
{
|
||||||
const char envVar[] = "RENESAS_FLASH_PROGRAMMER_PATH";
|
const char envVar[] = "RENESAS_FLASH_PROGRAMMER_PATH";
|
||||||
|
|
||||||
@@ -704,8 +704,7 @@ McuTargetDescription parseDescriptionJson(const QByteArray &data)
|
|||||||
toolchainPackage,
|
toolchainPackage,
|
||||||
toolchainFilePackage},
|
toolchainFilePackage},
|
||||||
boardSdkPackage,
|
boardSdkPackage,
|
||||||
{freeRTOS.value("envVar").toString(),
|
{freeRTOS.value("envVar").toString(), freeRtosPackage}};
|
||||||
freeRtosPackage}};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://doc.qt.io/qtcreator/creator-developing-mcu.html#supported-qt-for-mcus-sdks
|
// 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 QString &envVar,
|
||||||
const Utils::FilePath &boardSdkDir);
|
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 Legacy
|
||||||
} // namespace McuSupport::Internal
|
} // namespace McuSupport::Internal
|
||||||
|
@@ -1284,4 +1284,78 @@ void McuSupportTest::test_resolveCmakeVariablesInDefaultPath()
|
|||||||
QCOMPARE(toolchainFilePkg->defaultPath().toString(), expectedPkgPath);
|
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
|
} // namespace McuSupport::Internal::Test
|
||||||
|
@@ -92,6 +92,9 @@ private slots:
|
|||||||
void test_resolveEnvironmentVariablesInDefaultPath();
|
void test_resolveEnvironmentVariablesInDefaultPath();
|
||||||
void test_resolveCmakeVariablesInDefaultPath();
|
void test_resolveCmakeVariablesInDefaultPath();
|
||||||
|
|
||||||
|
void test_legacy_createThirdPartyPackage_data();
|
||||||
|
void test_legacy_createThirdPartyPackage();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVersionNumber currentQulVersion{2, 0};
|
QVersionNumber currentQulVersion{2, 0};
|
||||||
PackageMock *freeRtosPackage{new PackageMock};
|
PackageMock *freeRtosPackage{new PackageMock};
|
||||||
@@ -112,6 +115,10 @@ private:
|
|||||||
McuTarget::Platform platform;
|
McuTarget::Platform platform;
|
||||||
McuTarget mcuTarget;
|
McuTarget mcuTarget;
|
||||||
ProjectExplorer::Kit kit;
|
ProjectExplorer::Kit kit;
|
||||||
|
|
||||||
}; // class McuSupportTest
|
}; // class McuSupportTest
|
||||||
|
|
||||||
|
using PackageCreator = std::function<McuPackagePtr()>;
|
||||||
} // namespace McuSupport::Internal::Test
|
} // namespace McuSupport::Internal::Test
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(McuSupport::Internal::Test::PackageCreator);
|
||||||
|
Reference in New Issue
Block a user