forked from qt-creator/qt-creator
sdktool: Change tests to use QTest
* Moved all sdktool code into a static library, allowing us to link against the actual functionality in unittests * Convert all tests to proper unittests Change-Id: I5c93be0faecbd8b68e0923655483c870a2f408b5 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -35,6 +35,14 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
#include <QTest>
|
||||
#endif
|
||||
|
||||
#include <QLoggingCategory>
|
||||
|
||||
Q_LOGGING_CATEGORY(addtoolchainlog, "qtc.sdktool.operations.addtoolchain", QtWarningMsg)
|
||||
|
||||
// ToolChain file stuff:
|
||||
const char COUNT[] = "ToolChain.Count";
|
||||
const char PREFIX[] = "ToolChain.";
|
||||
@@ -64,13 +72,13 @@ QString AddToolChainOperation::helpText() const
|
||||
QString AddToolChainOperation::argumentsHelpText() const
|
||||
{
|
||||
return QString(
|
||||
" --id <ID> id of the new tool chain (required).\n"
|
||||
" --language <ID> input language id of the new tool chain (required).\n"
|
||||
" --name <NAME> display name of the new tool chain (required).\n"
|
||||
" --path <PATH> path to the compiler (required).\n"
|
||||
" --abi <ABI STRING> ABI of the compiler (required).\n"
|
||||
" --supportedAbis <ABI STRING>,<ABI STRING> list of ABIs supported by the compiler.\n"
|
||||
" <KEY> <TYPE:VALUE> extra key value pairs\n");
|
||||
" --id <ID> id of the new tool chain (required).\n"
|
||||
" --language <ID> input language id of the new tool chain (required).\n"
|
||||
" --name <NAME> display name of the new tool chain (required).\n"
|
||||
" --path <PATH> path to the compiler (required).\n"
|
||||
" --abi <ABI STRING> ABI of the compiler (required).\n"
|
||||
" --supportedAbis <ABI STRING>,<ABI STRING> list of ABIs supported by the compiler.\n"
|
||||
" <KEY> <TYPE:VALUE> extra key value pairs\n");
|
||||
}
|
||||
|
||||
bool AddToolChainOperation::setArguments(const QStringList &args)
|
||||
@@ -80,7 +88,9 @@ bool AddToolChainOperation::setArguments(const QStringList &args)
|
||||
const QString next = ((i + 1) < args.count()) ? args.at(i + 1) : QString();
|
||||
|
||||
if (next.isNull() && current.startsWith("--")) {
|
||||
std::cerr << "No parameter for option '" << qPrintable(current) << "' given." << std::endl << std::endl;
|
||||
std::cerr << "No parameter for option '" << qPrintable(current) << "' given."
|
||||
<< std::endl
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -149,7 +159,8 @@ bool AddToolChainOperation::setArguments(const QStringList &args)
|
||||
if (m_targetAbi.isEmpty())
|
||||
std::cerr << "No target abi given for tool chain." << std::endl;
|
||||
|
||||
return !m_id.isEmpty() && !m_displayName.isEmpty() && !m_path.isEmpty() && !m_targetAbi.isEmpty();
|
||||
return !m_id.isEmpty() && !m_displayName.isEmpty() && !m_path.isEmpty()
|
||||
&& !m_targetAbi.isEmpty();
|
||||
}
|
||||
|
||||
int AddToolChainOperation::execute() const
|
||||
@@ -166,66 +177,87 @@ int AddToolChainOperation::execute() const
|
||||
}
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool AddToolChainOperation::test() const
|
||||
void AddToolChainOperation::unittest()
|
||||
{
|
||||
QVariantMap map = initializeToolChains();
|
||||
|
||||
// Add toolchain:
|
||||
map = AddToolChainData{"testId", "langId", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
|
||||
{{"ExtraKey", QVariant("ExtraValue")}}}.addToolChain(map);
|
||||
if (map.value(COUNT).toInt() != 1
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '0'))
|
||||
return false;
|
||||
AddToolChainData d;
|
||||
d.m_id = "testId";
|
||||
d.m_languageId = "langId";
|
||||
d.m_displayName = "name";
|
||||
d.m_path = "/tmp/test";
|
||||
d.m_targetAbi = "test-abi";
|
||||
d.m_supportedAbis = "test-abi,test-abi2";
|
||||
d.m_extra = {{"ExtraKey", QVariant("ExtraValue")}};
|
||||
|
||||
map = d.addToolChain(map);
|
||||
QCOMPARE(map.value(COUNT).toInt(), 1);
|
||||
QVERIFY(map.contains(QString::fromLatin1(PREFIX) + '0'));
|
||||
|
||||
QVariantMap tcData = map.value(QString::fromLatin1(PREFIX) + '0').toMap();
|
||||
if (tcData.count() != 8
|
||||
|| tcData.value(ID).toString() != "testId"
|
||||
|| tcData.value(LANGUAGE_KEY_V2).toString() != "langId"
|
||||
|| tcData.value(DISPLAYNAME).toString() != "name"
|
||||
|| tcData.value(AUTODETECTED).toBool() != true
|
||||
|| tcData.value(PATH).toString() != "/tmp/test"
|
||||
|| tcData.value(TARGET_ABI).toString() != "test-abi"
|
||||
|| tcData.value(SUPPORTED_ABIS).toList().count() != 2
|
||||
|| tcData.value("ExtraKey").toString() != "ExtraValue")
|
||||
return false;
|
||||
QCOMPARE(tcData.count(), 8);
|
||||
QCOMPARE(tcData.value(ID).toString(), "testId");
|
||||
QCOMPARE(tcData.value(LANGUAGE_KEY_V2).toString(), "langId");
|
||||
QCOMPARE(tcData.value(DISPLAYNAME).toString(), "name");
|
||||
QCOMPARE(tcData.value(AUTODETECTED).toBool(), true);
|
||||
QCOMPARE(tcData.value(PATH).toString(), "/tmp/test");
|
||||
QCOMPARE(tcData.value(TARGET_ABI).toString(), "test-abi");
|
||||
QCOMPARE(tcData.value(SUPPORTED_ABIS).toList().count(), 2);
|
||||
QCOMPARE(tcData.value("ExtraKey").toString(), "ExtraValue");
|
||||
|
||||
// Ignore same Id:
|
||||
QVariantMap unchanged = AddToolChainData{"testId", "langId", "name2", "/tmp/test2", "test-abi2",
|
||||
"test-abi2,test-abi3",
|
||||
{{"ExtraKey", QVariant("ExtraValue2")}}}.addToolChain(map);
|
||||
if (!unchanged.isEmpty())
|
||||
return false;
|
||||
AddToolChainData ud;
|
||||
ud.m_id = "testId";
|
||||
ud.m_languageId = "langId";
|
||||
ud.m_displayName = "name2";
|
||||
ud.m_path = "/tmp/test2";
|
||||
ud.m_targetAbi = "test-abi2";
|
||||
ud.m_supportedAbis = "test-abi2,test-abi3";
|
||||
ud.m_extra = {{"ExtraKey", QVariant("ExtraValue")}};
|
||||
|
||||
QTest::ignoreMessage(QtCriticalMsg,
|
||||
QRegularExpression("Error: Id .* already defined for tool chains."));
|
||||
|
||||
QVariantMap unchanged = ud.addToolChain(map);
|
||||
QVERIFY(unchanged.isEmpty());
|
||||
|
||||
// add 2nd tool chain:
|
||||
map = AddToolChainData{"{some-tc-id}", "langId2", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
|
||||
{{"ExtraKey", QVariant("ExtraValue")}}}.addToolChain(map);
|
||||
if (map.value(COUNT).toInt() != 2
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '0')
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '1'))
|
||||
return false;
|
||||
tcData = map.value(QString::fromLatin1(PREFIX) + '0').toMap();
|
||||
if (tcData.count() != 8
|
||||
|| tcData.value(ID).toString() != "testId"
|
||||
|| tcData.value(LANGUAGE_KEY_V2).toString() != "langId"
|
||||
|| tcData.value(DISPLAYNAME).toString() != "name"
|
||||
|| tcData.value(AUTODETECTED).toBool() != true
|
||||
|| tcData.value(PATH).toString() != "/tmp/test"
|
||||
|| tcData.value(TARGET_ABI).toString() != "test-abi"
|
||||
|| tcData.value(SUPPORTED_ABIS).toList().count() != 2
|
||||
|| tcData.value("ExtraKey").toString() != "ExtraValue")
|
||||
return false;
|
||||
tcData = map.value(QString::fromLatin1(PREFIX) + '1').toMap();
|
||||
if (tcData.count() != 8
|
||||
|| tcData.value(ID).toString() != "{some-tc-id}"
|
||||
|| tcData.value(LANGUAGE_KEY_V2).toString() != "langId2"
|
||||
|| tcData.value(DISPLAYNAME).toString() != "name"
|
||||
|| tcData.value(AUTODETECTED).toBool() != true
|
||||
|| tcData.value(PATH).toString() != "/tmp/test"
|
||||
|| tcData.value(TARGET_ABI).toString() != "test-abi"
|
||||
|| tcData.value(SUPPORTED_ABIS).toList().count() != 2
|
||||
|| tcData.value("ExtraKey").toString() != "ExtraValue")
|
||||
return false;
|
||||
AddToolChainData d2;
|
||||
d2.m_id = "{some-tc-id}";
|
||||
d2.m_languageId = "langId2";
|
||||
d2.m_displayName = "name";
|
||||
d2.m_path = "/tmp/test";
|
||||
d2.m_targetAbi = "test-abi";
|
||||
d2.m_supportedAbis = "test-abi,test-abi2";
|
||||
d2.m_extra = {{"ExtraKey", QVariant("ExtraValue")}};
|
||||
|
||||
return true;
|
||||
map = d2.addToolChain(map);
|
||||
QCOMPARE(map.value(COUNT).toInt(), 2);
|
||||
QVERIFY(map.contains(QString::fromLatin1(PREFIX) + '0'));
|
||||
QVERIFY(map.contains(QString::fromLatin1(PREFIX) + '1'));
|
||||
|
||||
tcData = map.value(QString::fromLatin1(PREFIX) + '0').toMap();
|
||||
QCOMPARE(tcData.count(), 8);
|
||||
QCOMPARE(tcData.value(ID).toString(), "testId");
|
||||
QCOMPARE(tcData.value(LANGUAGE_KEY_V2).toString(), "langId");
|
||||
QCOMPARE(tcData.value(DISPLAYNAME).toString(), "name");
|
||||
QVERIFY(tcData.value(AUTODETECTED).toBool());
|
||||
QCOMPARE(tcData.value(PATH).toString(), "/tmp/test");
|
||||
QCOMPARE(tcData.value(TARGET_ABI).toString(), "test-abi");
|
||||
QCOMPARE(tcData.value(SUPPORTED_ABIS).toList().count(), 2);
|
||||
QCOMPARE(tcData.value("ExtraKey").toString(), "ExtraValue");
|
||||
|
||||
tcData = map.value(QString::fromLatin1(PREFIX) + '1').toMap();
|
||||
QCOMPARE(tcData.count(), 8);
|
||||
QCOMPARE(tcData.value(ID).toString(), "{some-tc-id}");
|
||||
QCOMPARE(tcData.value(LANGUAGE_KEY_V2).toString(), "langId2");
|
||||
QCOMPARE(tcData.value(DISPLAYNAME).toString(), "name");
|
||||
QVERIFY(tcData.value(AUTODETECTED).toBool());
|
||||
QCOMPARE(tcData.value(PATH).toString(), "/tmp/test");
|
||||
QCOMPARE(tcData.value(TARGET_ABI).toString(), "test-abi");
|
||||
QCOMPARE(tcData.value(SUPPORTED_ABIS).toList().count(), 2);
|
||||
QCOMPARE(tcData.value("ExtraKey").toString(), "ExtraValue");
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -233,7 +265,8 @@ QVariantMap AddToolChainData::addToolChain(const QVariantMap &map) const
|
||||
{
|
||||
// Sanity check: Does the Id already exist?
|
||||
if (exists(map, m_id)) {
|
||||
std::cerr << "Error: Id " << qPrintable(m_id) << " already defined for tool chains." << std::endl;
|
||||
qCCritical(addtoolchainlog)
|
||||
<< "Error: Id" << qPrintable(m_id) << "already defined for tool chains.";
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
@@ -241,7 +274,7 @@ QVariantMap AddToolChainData::addToolChain(const QVariantMap &map) const
|
||||
bool ok;
|
||||
int count = GetOperation::get(map, COUNT).toInt(&ok);
|
||||
if (!ok || count < 0) {
|
||||
std::cerr << "Error: Count found in toolchains file seems wrong." << std::endl;
|
||||
qCCritical(addtoolchainlog) << "Error: Count found in toolchains file seems wrong.";
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
@@ -261,9 +294,9 @@ QVariantMap AddToolChainData::addToolChain(const QVariantMap &map) const
|
||||
} else if (m_languageId == "1" || m_languageId == "C") {
|
||||
newLang = "C";
|
||||
} else if (ok) {
|
||||
std::cerr << "Error: Language ID must be 1 for C, 2 for Cxx "
|
||||
<< "or a string like \"C\", \"Cxx\", \"Nim\" (was \""
|
||||
<< qPrintable(m_languageId) << "\")" << std::endl;
|
||||
qCCritical(addtoolchainlog) << "Error: Language ID must be 1 for C, 2 for Cxx "
|
||||
<< "or a string like \"C\", \"Cxx\", \"Nim\" (was \""
|
||||
<< qPrintable(m_languageId) << "\")";
|
||||
return {};
|
||||
} else if (!ok) {
|
||||
newLang = m_languageId;
|
||||
|
||||
Reference in New Issue
Block a user