diff options
author | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2022-04-04 14:31:22 +0200 |
---|---|---|
committer | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2022-04-04 14:27:46 +0000 |
commit | c246caf7a96b1d689ee03d900f6bc503e00a4b02 (patch) | |
tree | 768b7d6cbdad9a0cdaad0e77d0a499ce8ab3b8b8 /src/tools/sdktool/addtoolchainoperation.cpp | |
parent | 055de08524fcaebbd2f5de9760d4ec9a06667544 (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.cpp | 159 |
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; |