aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/sdktool/addtoolchainoperation.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2022-04-04 14:31:22 +0200
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2022-04-04 14:27:46 +0000
commitc246caf7a96b1d689ee03d900f6bc503e00a4b02 (patch)
tree768b7d6cbdad9a0cdaad0e77d0a499ce8ab3b8b8 /src/tools/sdktool/addtoolchainoperation.cpp
parent055de08524fcaebbd2f5de9760d4ec9a06667544 (diff)
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>
Diffstat (limited to 'src/tools/sdktool/addtoolchainoperation.cpp')
-rw-r--r--src/tools/sdktool/addtoolchainoperation.cpp159
1 files changed, 96 insertions, 63 deletions
diff --git a/src/tools/sdktool/addtoolchainoperation.cpp b/src/tools/sdktool/addtoolchainoperation.cpp
index aec304b647..d305b3e7d4 100644
--- a/src/tools/sdktool/addtoolchainoperation.cpp
+++ b/src/tools/sdktool/addtoolchainoperation.cpp
@@ -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;
+ 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")}};
+
+ 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();
- 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;
+ 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");
- return true;
+ 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;