aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tools/sdktool/CMakeLists.txt46
-rw-r--r--src/tools/sdktool/addabiflavor.cpp49
-rw-r--r--src/tools/sdktool/addabiflavor.h2
-rw-r--r--src/tools/sdktool/addcmakeoperation.cpp114
-rw-r--r--src/tools/sdktool/addcmakeoperation.h2
-rw-r--r--src/tools/sdktool/adddebuggeroperation.cpp70
-rw-r--r--src/tools/sdktool/adddebuggeroperation.h2
-rw-r--r--src/tools/sdktool/adddeviceoperation.cpp82
-rw-r--r--src/tools/sdktool/adddeviceoperation.h2
-rw-r--r--src/tools/sdktool/addkeysoperation.cpp141
-rw-r--r--src/tools/sdktool/addkeysoperation.h3
-rw-r--r--src/tools/sdktool/addkitoperation.cpp509
-rw-r--r--src/tools/sdktool/addkitoperation.h3
-rw-r--r--src/tools/sdktool/addqtoperation.cpp179
-rw-r--r--src/tools/sdktool/addqtoperation.h4
-rw-r--r--src/tools/sdktool/addtoolchainoperation.cpp159
-rw-r--r--src/tools/sdktool/addtoolchainoperation.h3
-rw-r--r--src/tools/sdktool/addvalueoperation.cpp58
-rw-r--r--src/tools/sdktool/addvalueoperation.h2
-rw-r--r--src/tools/sdktool/findkeyoperation.cpp42
-rw-r--r--src/tools/sdktool/findkeyoperation.h4
-rw-r--r--src/tools/sdktool/findvalueoperation.cpp39
-rw-r--r--src/tools/sdktool/findvalueoperation.h2
-rw-r--r--src/tools/sdktool/getoperation.cpp28
-rw-r--r--src/tools/sdktool/getoperation.h3
-rw-r--r--src/tools/sdktool/main.cpp15
-rw-r--r--src/tools/sdktool/operation.h4
-rw-r--r--src/tools/sdktool/rmcmakeoperation.cpp87
-rw-r--r--src/tools/sdktool/rmcmakeoperation.h2
-rw-r--r--src/tools/sdktool/rmdebuggeroperation.cpp92
-rw-r--r--src/tools/sdktool/rmdebuggeroperation.h3
-rw-r--r--src/tools/sdktool/rmdeviceoperation.cpp21
-rw-r--r--src/tools/sdktool/rmdeviceoperation.h2
-rw-r--r--src/tools/sdktool/rmkeysoperation.cpp95
-rw-r--r--src/tools/sdktool/rmkeysoperation.h2
-rw-r--r--src/tools/sdktool/rmkitoperation.cpp105
-rw-r--r--src/tools/sdktool/rmkitoperation.h2
-rw-r--r--src/tools/sdktool/rmqtoperation.cpp59
-rw-r--r--src/tools/sdktool/rmqtoperation.h2
-rw-r--r--src/tools/sdktool/rmtoolchainoperation.cpp77
-rw-r--r--src/tools/sdktool/rmtoolchainoperation.h3
-rw-r--r--src/tools/sdktool/sdktool.qbs68
-rw-r--r--src/tools/sdktool/sdktoollib.qbs109
-rw-r--r--src/tools/tools.qbs1
-rw-r--r--tests/auto/sdktool/CMakeLists.txt2
-rw-r--r--tests/auto/sdktool/sdktool.qbs2
-rw-r--r--tests/auto/sdktool/tst_sdktool.cpp57
47 files changed, 1275 insertions, 1083 deletions
diff --git a/src/tools/sdktool/CMakeLists.txt b/src/tools/sdktool/CMakeLists.txt
index 0161cc2c2ed..8a47006a249 100644
--- a/src/tools/sdktool/CMakeLists.txt
+++ b/src/tools/sdktool/CMakeLists.txt
@@ -33,12 +33,12 @@ set(UtilsSourcesDir "../../libs/utils")
file(RELATIVE_PATH DATA_PATH "/${IDE_LIBEXEC_PATH}" "/${IDE_DATA_PATH}")
-add_qtc_executable(sdktool
- ${DESTINATION}
+add_qtc_library(sdktoolLib
+ STATIC
DEFINES DATA_PATH=\"${DATA_PATH}\"
- DEPENDS Qt5::Core
+ PUBLIC_DEPENDS Qt5::Core
+ PUBLIC_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} "${UtilsSourcesDir}/../"
INCLUDES
- "${UtilsSourcesDir}/../"
${CMAKE_CURRENT_BINARY_DIR}
SOURCES
addabiflavor.cpp addabiflavor.h
@@ -53,7 +53,6 @@ add_qtc_executable(sdktool
findkeyoperation.cpp findkeyoperation.h
findvalueoperation.cpp findvalueoperation.h
getoperation.cpp getoperation.h
- main.cpp
operation.cpp operation.h
rmcmakeoperation.cpp rmcmakeoperation.h
rmdebuggeroperation.cpp rmdebuggeroperation.h
@@ -65,15 +64,7 @@ add_qtc_executable(sdktool
settings.cpp settings.h
)
-if (MSVC AND TARGET sdktool)
- # find out if Qt is static and set /MT if so
- get_target_property(_input_type Qt5::Core TYPE)
- if (${_input_type} STREQUAL "STATIC_LIBRARY")
- set_property(TARGET sdktool PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
- endif()
-endif()
-
-extend_qtc_executable(sdktool
+extend_qtc_library(sdktoolLib
SOURCES_PREFIX "${UtilsSourcesDir}"
DEFINES QTCREATOR_UTILS_STATIC_LIB
SOURCES
@@ -92,18 +83,37 @@ extend_qtc_executable(sdktool
stringutils.cpp stringutils.h
)
-extend_qtc_executable(sdktool CONDITION APPLE
+extend_qtc_library(sdktoolLib CONDITION APPLE
SOURCES_PREFIX "${UtilsSourcesDir}"
SOURCES
fileutils_mac.mm fileutils_mac.h
- DEPENDS
+ PUBLIC_DEPENDS
${FWFoundation}
)
-extend_qtc_executable(sdktool CONDITION WIN32
- DEPENDS
+extend_qtc_library(sdktoolLib CONDITION WIN32
+ PUBLIC_DEPENDS
user32 iphlpapi ws2_32 shell32
DEFINES
_UNICODE UNICODE
_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS
)
+
+add_qtc_executable(sdktool
+ ${DESTINATION}
+ DEFINES DATA_PATH=\"${DATA_PATH}\"
+ DEPENDS sdktoolLib
+ INCLUDES
+ ${CMAKE_CURRENT_BINARY_DIR}
+ SOURCES
+ main.cpp
+)
+
+if (MSVC AND TARGET sdktool)
+ # find out if Qt is static and set /MT if so
+ get_target_property(_input_type Qt5::Core TYPE)
+ if (${_input_type} STREQUAL "STATIC_LIBRARY")
+ set_property(TARGET sdktool PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
+ endif()
+endif()
+
diff --git a/src/tools/sdktool/addabiflavor.cpp b/src/tools/sdktool/addabiflavor.cpp
index fa6b729bcf2..a6f4607ea6a 100644
--- a/src/tools/sdktool/addabiflavor.cpp
+++ b/src/tools/sdktool/addabiflavor.cpp
@@ -33,10 +33,14 @@
#include "settings.h"
+#include <QLoggingCategory>
+
#ifdef WITH_TESTS
#include <QtTest>
#endif
+Q_LOGGING_CATEGORY(addAbiFlavorLog, "qtc.sdktool.operations.addabiflavor", QtWarningMsg)
+
#include <iostream>
const char VERSION[] = "Version";
@@ -66,7 +70,7 @@ bool AddAbiFlavor::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;
+ qCCritical(addAbiFlavorLog) << "No parameter for option '" << qPrintable(current) << "' given.";
return false;
}
@@ -82,15 +86,15 @@ bool AddAbiFlavor::setArguments(const QStringList &args)
continue;
}
- std::cerr << "Unknown parameter: " << qPrintable(current) << std::endl << std::endl;
+ qCCritical(addAbiFlavorLog) << "Unknown parameter: " << qPrintable(current);
return false;
}
if (m_flavor.isEmpty())
- std::cerr << "Error no flavor was passed." << std::endl << std::endl;
+ qCCritical(addAbiFlavorLog) << "Error no flavor was passed.";
if (m_oses.isEmpty())
- std::cerr << "Error no OSes name was passed." << std::endl << std::endl;
+ qCCritical(addAbiFlavorLog) << "Error no OSes name was passed.";
return !m_flavor.isEmpty() && !m_oses.isEmpty();
}
@@ -110,38 +114,31 @@ int AddAbiFlavor::execute() const
}
#ifdef WITH_TESTS
-bool AddAbiFlavor::test() const
+void AddAbiFlavor::unittest()
{
QVariantMap map = initializeAbiFlavors();
- if (map.count() != 1)
- return false;
- if (!map.contains(QLatin1String(VERSION)))
- return false;
+ QCOMPARE(map.count(), 1);
+ QVERIFY(map.contains(QLatin1String(VERSION)));
- map = AddAbiFlavorData{{"linux", "windows"}, "foo"}.addAbiFlavor(map);
+ AddAbiFlavorData d;
+ d.m_oses = {"linux", "windows"};
+ d.m_flavor = "foo";
+ map = d.addAbiFlavor(map);
- if (map.count() != 2)
- return false;
- if (!map.contains(QLatin1String(VERSION)))
- return false;
- if (!map.contains(QLatin1String(FLAVORS)))
- return false;
+ QCOMPARE(map.count(), 2);
+ QVERIFY(map.contains(QLatin1String(VERSION)));
+ QVERIFY(map.contains(QLatin1String(FLAVORS)));
const QVariantMap flavorMap = map.value(QLatin1String(FLAVORS)).toMap();
- if (flavorMap.count() != 1)
- return false;
- if (flavorMap.value("foo").toStringList() != QStringList({"linux", "windows"}))
- return false;
+ QCOMPARE(flavorMap.count(), 1);
+ QCOMPARE(flavorMap.value("foo").toStringList(), QStringList({"linux", "windows"}));
// Ignore known flavors:
- QTest::ignoreMessage(QtWarningMsg,
+ QTest::ignoreMessage(QtCriticalMsg,
QRegularExpression("Error: flavor .* already defined as extra ABI flavor."));
const QVariantMap result = AddAbiFlavorData({{"linux"}, "foo"}).addAbiFlavor(map);
- if (map != result)
- return false;
-
- return true;
+ QCOMPARE(map, result);
}
#endif
@@ -149,7 +146,7 @@ QVariantMap AddAbiFlavorData::addAbiFlavor(const QVariantMap &map) const
{
// Sanity check: Is flavor already set in abi file?
if (exists(map, m_flavor)) {
- std::cerr << "Error: flavor " << qPrintable(m_flavor) << " already defined as extra ABI flavor." << std::endl;
+ qCCritical(addAbiFlavorLog) << "Error: flavor" << qPrintable(m_flavor) << "already defined as extra ABI flavor.";
return map;
}
diff --git a/src/tools/sdktool/addabiflavor.h b/src/tools/sdktool/addabiflavor.h
index fabd9d001a9..27ade701f51 100644
--- a/src/tools/sdktool/addabiflavor.h
+++ b/src/tools/sdktool/addabiflavor.h
@@ -53,6 +53,6 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
};
diff --git a/src/tools/sdktool/addcmakeoperation.cpp b/src/tools/sdktool/addcmakeoperation.cpp
index 9bbec46ac68..687a43edec8 100644
--- a/src/tools/sdktool/addcmakeoperation.cpp
+++ b/src/tools/sdktool/addcmakeoperation.cpp
@@ -33,7 +33,13 @@
#include "settings.h"
-#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(addCMakeOperationLog, "qtc.sdktool.operations.addcmake", QtWarningMsg)
// CMakeTools file stuff:
const char COUNT[] = "CMakeTools.Count";
@@ -72,7 +78,7 @@ bool AddCMakeOperation::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;
+ qCCritical(addCMakeOperationLog) << "No parameter for option '" << qPrintable(current) << "' given.";
return false;
}
@@ -94,24 +100,24 @@ bool AddCMakeOperation::setArguments(const QStringList &args)
continue;
}
if (next.isNull()) {
- std::cerr << "No value given for key '" << qPrintable(current) << "'.";
+ qCCritical(addCMakeOperationLog) << "No value given for key '" << qPrintable(current) << "'.";
return false;
}
++i; // skip next;
KeyValuePair pair(current, next);
if (!pair.value.isValid()) {
- std::cerr << "Value for key '" << qPrintable(current) << "' is not valid.";
+ qCCritical(addCMakeOperationLog) << "Value for key '" << qPrintable(current) << "' is not valid.";
return false;
}
m_extra << pair;
}
if (m_id.isEmpty())
- std::cerr << "No id given for cmake tool." << std::endl;
+ qCCritical(addCMakeOperationLog) << "No id given for cmake tool.";
if (m_displayName.isEmpty())
- std::cerr << "No name given for cmake tool." << std::endl;
+ qCCritical(addCMakeOperationLog) << "No name given for cmake tool.";
if (m_path.isEmpty())
- std::cerr << "No path given for cmake tool." << std::endl;
+ qCCritical(addCMakeOperationLog) << "No path given for cmake tool.";
return !m_id.isEmpty() && !m_displayName.isEmpty() && !m_path.isEmpty();
}
@@ -130,55 +136,69 @@ int AddCMakeOperation::execute() const
}
#ifdef WITH_TESTS
-bool AddCMakeOperation::test() const
+void AddCMakeOperation::unittest()
{
QVariantMap map = initializeCMake();
// Add toolchain:
- map = AddCMakeData{"testId", "name", "/tmp/test", {{"ExtraKey", QVariant("ExtraValue")}}}.addCMake(map);
- if (map.value(COUNT).toInt() != 1
- || !map.contains(QString::fromLatin1(PREFIX) + '0'))
- return false;
+ AddCMakeData d;
+ d.m_id = "testId";
+ d.m_displayName = "name";
+ d.m_path = "/tmp/test";
+ d.m_extra = {{"ExtraKey", QVariant("ExtraValue")}};
+ map = d.addCMake(map);
+
+ QCOMPARE(map.value(COUNT).toInt(), 1);
+ QVERIFY(map.contains(QString::fromLatin1(PREFIX) + '0'));
+
QVariantMap cmData = map.value(QString::fromLatin1(PREFIX) + '0').toMap();
- if (cmData.count() != 5
- || cmData.value(ID_KEY).toString() != "testId"
- || cmData.value(DISPLAYNAME_KEY).toString() != "name"
- || cmData.value(AUTODETECTED_KEY).toBool() != true
- || cmData.value(PATH_KEY).toString() != "/tmp/test"
- || cmData.value("ExtraKey").toString() != "ExtraValue")
- return false;
+ QCOMPARE(cmData.count(), 5);
+ QCOMPARE(cmData.value(ID_KEY).toString(), "testId");
+ QCOMPARE(cmData.value(DISPLAYNAME_KEY).toString(), "name");
+ QCOMPARE(cmData.value(AUTODETECTED_KEY).toBool(), true);
+ QCOMPARE(cmData.value(PATH_KEY).toString(), "/tmp/test");
+ QCOMPARE(cmData.value("ExtraKey").toString(), "ExtraValue");
// Ignore same Id:
- QVariantMap unchanged = AddCMakeData{"testId", "name2", "/tmp/test2", {{"ExtraKey", QVariant("ExtraValue2")}}}
- .addCMake(map);
- if (!unchanged.isEmpty())
- return false;
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Error: Id .* already defined for tool chains."));
+
+ AddCMakeData ud;
+ ud.m_id = "testId";
+ ud.m_displayName = "name2";
+ ud.m_path = "/tmp/test2";
+ ud.m_extra = {{"ExtraKey", QVariant("ExtraValue2")}};
+
+ QVariantMap unchanged = ud.addCMake(map);
+ QVERIFY(unchanged.isEmpty());
// add 2nd cmake
- map = AddCMakeData{"{some-cm-id}", "name", "/tmp/test", {{"ExtraKey", QVariant("ExtraValue")}}}
- .addCMake(map);
- if (map.value(COUNT).toInt() != 2
- || !map.contains(QString::fromLatin1(PREFIX) + '0')
- || !map.contains(QString::fromLatin1(PREFIX) + '1'))
- return false;
+ AddCMakeData d2;
+ d2.m_id = "{some-cm-id}",
+ d2.m_displayName = "name";
+ d2.m_path = "/tmp/test";
+ d2.m_extra = {{"ExtraKey", QVariant("ExtraValue")}};
+ map = d2.addCMake(map);
+
+ QCOMPARE(map.value(COUNT).toInt(), 2);
+ QVERIFY(map.contains(QString::fromLatin1(PREFIX) + '0'));
+ QVERIFY(map.contains(QString::fromLatin1(PREFIX) + '1'));
+
cmData = map.value(QString::fromLatin1(PREFIX) + '0').toMap();
- if (cmData.count() != 5
- || cmData.value(ID_KEY).toString() != "testId"
- || cmData.value(DISPLAYNAME_KEY).toString() != "name"
- || cmData.value(AUTODETECTED_KEY).toBool() != true
- || cmData.value(PATH_KEY).toString() != "/tmp/test"
- || cmData.value("ExtraKey").toString() != "ExtraValue")
- return false;
- cmData = map.value(QString::fromLatin1(PREFIX) + '1').toMap();
- if (cmData.count() != 5
- || cmData.value(ID_KEY).toString() != "{some-cm-id}"
- || cmData.value(DISPLAYNAME_KEY).toString() != "name"
- || cmData.value(AUTODETECTED_KEY).toBool() != true
- || cmData.value(PATH_KEY).toString() != "/tmp/test"
- || cmData.value("ExtraKey").toString() != "ExtraValue")
- return false;
+ QCOMPARE(cmData.count(), 5);
+ QCOMPARE(cmData.value(ID_KEY).toString(), "testId");
+ QCOMPARE(cmData.value(DISPLAYNAME_KEY).toString(), "name");
+ QVERIFY(cmData.value(AUTODETECTED_KEY).toBool());
+ QCOMPARE(cmData.value(PATH_KEY).toString(), "/tmp/test");
+ QCOMPARE(cmData.value("ExtraKey").toString(), "ExtraValue");
- return true;
+ cmData = map.value(QString::fromLatin1(PREFIX) + '1').toMap();
+ QCOMPARE(cmData.count(), 5);
+ QCOMPARE(cmData.value(ID_KEY).toString(), "{some-cm-id}");
+ QCOMPARE(cmData.value(DISPLAYNAME_KEY).toString(), "name");
+ QVERIFY(cmData.value(AUTODETECTED_KEY).toBool());
+ QCOMPARE(cmData.value(PATH_KEY).toString(), "/tmp/test");
+ QCOMPARE(cmData.value("ExtraKey").toString(), "ExtraValue");
}
#endif
@@ -186,7 +206,7 @@ QVariantMap AddCMakeData::addCMake(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(addCMakeOperationLog) << "Error: Id" << qPrintable(m_id) << "already defined for tool chains.";
return QVariantMap();
}
@@ -194,7 +214,7 @@ QVariantMap AddCMakeData::addCMake(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(addCMakeOperationLog) << "Error: Count found in toolchains file seems wrong.";
return QVariantMap();
}
diff --git a/src/tools/sdktool/addcmakeoperation.h b/src/tools/sdktool/addcmakeoperation.h
index 13045290178..90bfaf60357 100644
--- a/src/tools/sdktool/addcmakeoperation.h
+++ b/src/tools/sdktool/addcmakeoperation.h
@@ -55,6 +55,6 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
};
diff --git a/src/tools/sdktool/adddebuggeroperation.cpp b/src/tools/sdktool/adddebuggeroperation.cpp
index e3797525786..6c228cdb8b3 100644
--- a/src/tools/sdktool/adddebuggeroperation.cpp
+++ b/src/tools/sdktool/adddebuggeroperation.cpp
@@ -33,7 +33,13 @@
#include "settings.h"
-#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(addDebuggerOperationLog, "qtc.sdktool.operations.adddebugger", QtWarningMsg)
const char VERSION[] = "Version";
const char COUNT[] = "DebuggerItem.Count";
@@ -96,7 +102,7 @@ bool AddDebuggerOperation::setArguments(const QStringList &args)
bool ok;
m_engine = next.toInt(&ok);
if (!ok) {
- std::cerr << "Debugger type is not an integer!" << std::endl;
+ qCCritical(addDebuggerOperationLog) << "Debugger type is not an integer!";
return false;
}
continue;
@@ -128,12 +134,10 @@ bool AddDebuggerOperation::setArguments(const QStringList &args)
m_extra << pair;
}
-
-
if (m_id.isEmpty())
- std::cerr << "No id given for kit." << std::endl << std::endl;
+ qCCritical(addDebuggerOperationLog) << "No id given for kit.";
if (m_displayName.isEmpty())
- std::cerr << "No name given for kit." << std::endl << std::endl;
+ qCCritical(addDebuggerOperationLog) << "No name given for kit.";
return !m_id.isEmpty() && !m_displayName.isEmpty();
}
@@ -153,18 +157,50 @@ int AddDebuggerOperation::execute() const
}
#ifdef WITH_TESTS
-bool AddDebuggerOperation::test() const
+void AddDebuggerOperation::unittest()
{
QVariantMap map = initializeDebuggers();
- if (map.count() != 2
- || !map.contains(QLatin1String(VERSION))
- || map.value(QLatin1String(VERSION)).toInt() != 1
- || !map.contains(QLatin1String(COUNT))
- || map.value(QLatin1String(COUNT)).toInt() != 0)
- return false;
-
- return true;
+ QCOMPARE(map.count(), 2);
+
+ QVERIFY(map.contains(QLatin1String(VERSION)));
+ QCOMPARE(map.value(QLatin1String(VERSION)).toInt(), 1);
+ QVERIFY(map.contains(QLatin1String(COUNT)));
+ QCOMPARE(map.value(QLatin1String(COUNT)).toInt(), 0);
+
+ AddDebuggerData d;
+ d.m_id = "testId";
+ d.m_displayName = "name";
+ d.m_binary = "/tmp/bin/gdb";
+ d.m_abis = {"aarch64", "x86_64"};
+ d.m_extra = {{"ExtraKey", QVariant("ExtraValue")}};
+ map = d.addDebugger(map);
+
+ QCOMPARE(map.value(COUNT).toInt(), 1);
+ QVERIFY(map.contains(QString::fromLatin1(PREFIX) + '0'));
+
+ QVariantMap dbgData = map.value(QString::fromLatin1(PREFIX) + '0').toMap();
+ QCOMPARE(dbgData.count(), 7);
+ QCOMPARE(dbgData.value(ID).toString(), "testId");
+ QCOMPARE(dbgData.value(DISPLAYNAME).toString(), "name");
+ QCOMPARE(dbgData.value(AUTODETECTED).toBool(), true);
+ QCOMPARE(dbgData.value(ABIS).toStringList(), (QStringList{"aarch64", "x86_64"}));
+ QCOMPARE(dbgData.value(BINARY).toString(), "/tmp/bin/gdb");
+ QCOMPARE(dbgData.value(ENGINE_TYPE).toInt(), 0);
+ QCOMPARE(dbgData.value("ExtraKey").toString(), "ExtraValue");
+
+ // Ignore existing.
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Error: Id .* already defined as debugger."));
+
+ AddDebuggerData d2;
+ d2.m_id = "testId";
+ d2.m_displayName = "name2";
+ d2.m_binary = "/tmp/bin/gdb";
+ d2.m_abis = {};
+ d2.m_extra = {{"ExtraKey", QVariant("ExtraValue2")}};
+ QVariantMap unchanged = d2.addDebugger(map);
+ QVERIFY(unchanged.isEmpty());
}
#endif
@@ -180,7 +216,7 @@ QVariantMap AddDebuggerData::addDebugger(const QVariantMap &map) const
}
}
if (hasId) {
- std::cerr << "Error: Id " << qPrintable(m_id) << " already defined as debugger." << std::endl;
+ qCCritical(addDebuggerOperationLog) << "Error: Id" << qPrintable(m_id) << "already defined as debugger.";
return QVariantMap();
}
@@ -188,7 +224,7 @@ QVariantMap AddDebuggerData::addDebugger(const QVariantMap &map) const
bool ok;
int count = GetOperation::get(map, QLatin1String(COUNT)).toInt(&ok);
if (!ok || count < 0) {
- std::cerr << "Error: Count found in debuggers file seems wrong." << std::endl;
+ qCCritical(addDebuggerOperationLog) << "Error: Count found in debuggers file seems wrong.";
return QVariantMap();
}
const QString debugger = QString::fromLatin1(PREFIX) + QString::number(count);
diff --git a/src/tools/sdktool/adddebuggeroperation.h b/src/tools/sdktool/adddebuggeroperation.h
index 788900ee2c6..57cdc55a448 100644
--- a/src/tools/sdktool/adddebuggeroperation.h
+++ b/src/tools/sdktool/adddebuggeroperation.h
@@ -54,6 +54,6 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
};
diff --git a/src/tools/sdktool/adddeviceoperation.cpp b/src/tools/sdktool/adddeviceoperation.cpp
index 00628be384c..002932f7e9f 100644
--- a/src/tools/sdktool/adddeviceoperation.cpp
+++ b/src/tools/sdktool/adddeviceoperation.cpp
@@ -33,7 +33,13 @@
#include "settings.h"
-#include <iostream>
+#include <QLoggingCategory>
+
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+Q_LOGGING_CATEGORY(addDeviceLog, "qtc.sdktool.operations.adddevice", QtWarningMsg)
const char DEVICEMANAGER_ID[] = "DeviceManager";
const char DEFAULT_DEVICES_ID[] = "DefaultDevices";
@@ -261,9 +267,9 @@ bool AddDeviceOperation::setArguments(const QStringList &args)
}
if (m_id.isEmpty())
- std::cerr << "No id given for device." << std::endl << std::endl;
+ qCCritical(addDeviceLog) << "No id given for device.";
if (m_displayName.isEmpty())
- std::cerr << "No name given for device." << std::endl << std::endl;
+ qCCritical(addDeviceLog) << "No name given for device.";
return !m_id.isEmpty() && !m_displayName.isEmpty() && m_type >= 0;
}
@@ -283,7 +289,7 @@ int AddDeviceOperation::execute() const
}
#ifdef WITH_TESTS
-bool AddDeviceOperation::test() const
+void AddDeviceOperation::unittest()
{
QVariantMap map = initializeDevices();
@@ -305,57 +311,37 @@ bool AddDeviceOperation::test() const
devData.m_timeout = 5;
devData.m_uname = "uname";
devData.m_version = 6;
+ devData.m_dockerMappedPaths = QStringList{"/opt", "/data"};
devData.m_dockerRepo = "repo";
devData.m_dockerTag = "tag";
- devData.m_dockerMappedPaths = QStringList{"/opt", "/data"};
+
QVariantMap result = devData.addDevice(map);
QVariantMap data = result.value(QLatin1String(DEVICEMANAGER_ID)).toMap();
QVariantList devList = data.value(QLatin1String(DEVICE_LIST_ID)).toList();
- if (devList.count() != 1)
- return false;
+ QCOMPARE(devList.count(), 1);
QVariantMap dev = devList.at(0).toMap();
- if (dev.count() != 20)
- return false;
- if (dev.value(QLatin1String("Authentication")).toInt() != 2)
- return false;
- if (dev.value(QLatin1String("DebugServerKey")).toString() != QLatin1String("debugServer"))
- return false;
- if (dev.value(QLatin1String("FreePortsSpec")).toString() != QLatin1String("ports"))
- return false;
- if (dev.value(QLatin1String("Host")).toString() != QLatin1String("host"))
- return false;
- if (dev.value(QLatin1String("InternalId")).toString() != QLatin1String("test id"))
- return false;
- if (dev.value(QLatin1String("KeyFile")).toString() != QLatin1String("keyfile"))
- return false;
- if (dev.value(QLatin1String("Name")).toString() != QLatin1String("test name"))
- return false;
- if (dev.value(QLatin1String("Origin")).toInt() != 3)
- return false;
- if (dev.value(QLatin1String("OsType")).toString() != QLatin1String("ostype"))
- return false;
- if (dev.value(QLatin1String("Password")).toString() != QLatin1String("passwd"))
- return false;
- if (dev.value(QLatin1String("SshPort")).toInt() != 4)
- return false;
- if (dev.value(QLatin1String("Timeout")).toInt() != 5)
- return false;
- if (dev.value(QLatin1String("Type")).toInt() != 1)
- return false;
- if (dev.value(QLatin1String("Uname")).toString() != QLatin1String("uname"))
- return false;
- if (dev.value(QLatin1String("Version")).toInt() != 6)
- return false;
- if (dev.value(QLatin1String("DockerDeviceDataRepo")).toString() != "repo")
- return false;
- if (dev.value(QLatin1String("DockerDeviceDataTag")).toString() != "tag")
- return false;
- const QStringList paths = dev.value(QLatin1String("DockerDeviceMappedPaths")).toStringList();
- if (paths != QStringList({"/opt", "/data"}))
- return false;
+ QCOMPARE(dev.count(), 20);
+ QCOMPARE(dev.value(QLatin1String("Authentication")).toInt(), 2);
+ QCOMPARE(dev.value(QLatin1String("DebugServerKey")).toString(), QLatin1String("debugServer"));
+ QCOMPARE(dev.value(QLatin1String("FreePortsSpec")).toString(), QLatin1String("ports"));
+ QCOMPARE(dev.value(QLatin1String("Host")).toString(), QLatin1String("host"));
+ QCOMPARE(dev.value(QLatin1String("InternalId")).toString(), QLatin1String("test id"));
+ QCOMPARE(dev.value(QLatin1String("KeyFile")).toString(), QLatin1String("keyfile"));
+ QCOMPARE(dev.value(QLatin1String("Name")).toString(), QLatin1String("test name"));
+ QCOMPARE(dev.value(QLatin1String("Origin")).toInt(), 3);
+ QCOMPARE(dev.value(QLatin1String("OsType")).toString(), QLatin1String("ostype"));
+ QCOMPARE(dev.value(QLatin1String("Password")).toString(), QLatin1String("passwd"));
+ QCOMPARE(dev.value(QLatin1String("SshPort")).toInt(), 4);
+ QCOMPARE(dev.value(QLatin1String("Timeout")).toInt(), 5);
+ QCOMPARE(dev.value(QLatin1String("Type")).toInt(), 1);
+ QCOMPARE(dev.value(QLatin1String("Uname")).toString(), QLatin1String("uname"));
+ QCOMPARE(dev.value(QLatin1String("Version")).toInt(), 6);
+ QCOMPARE(dev.value(QLatin1String("DockerDeviceDataRepo")).toString(), "repo");
+ QCOMPARE(dev.value(QLatin1String("DockerDeviceDataTag")).toString(), "tag");
- return true;
+ const QStringList paths = dev.value(QLatin1String("DockerDeviceMappedPaths")).toStringList();
+ QCOMPARE(paths, QStringList({"/opt", "/data"}));
}
#endif
@@ -363,7 +349,7 @@ QVariantMap AddDeviceData::addDevice(const QVariantMap &map) const
{
QVariantMap result = map;
if (exists(map, m_id)) {
- std::cerr << "Device " << qPrintable(m_id) << " already exists!" << std::endl;
+ qCCritical(addDeviceLog) << "Device " << qPrintable(m_id) << " already exists!";
return result;
}
diff --git a/src/tools/sdktool/adddeviceoperation.h b/src/tools/sdktool/adddeviceoperation.h
index 67f4a677d6d..2d5e7a54ad5 100644
--- a/src/tools/sdktool/adddeviceoperation.h
+++ b/src/tools/sdktool/adddeviceoperation.h
@@ -80,6 +80,6 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
};
diff --git a/src/tools/sdktool/addkeysoperation.cpp b/src/tools/sdktool/addkeysoperation.cpp
index cc26b536f58..95c567e0e04 100644
--- a/src/tools/sdktool/addkeysoperation.cpp
+++ b/src/tools/sdktool/addkeysoperation.cpp
@@ -27,6 +27,14 @@
#include <iostream>
+#include <QLoggingCategory>
+
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+Q_LOGGING_CATEGORY(addkeyslog, "qtc.sdktool.operations.addkeys", QtWarningMsg)
+
QString AddKeysOperation::name() const
{
return QLatin1String("addKeys");
@@ -39,8 +47,9 @@ QString AddKeysOperation::helpText() const
QString AddKeysOperation::argumentsHelpText() const
{
- return QLatin1String("A file (relative to top-level settings directory and without .xml extension)\n"
- "followed by one or more Tuples <KEY> <TYPE>:<VALUE> are required.\n");
+ return QLatin1String(
+ "A file (relative to top-level settings directory and without .xml extension)\n"
+ "followed by one or more Tuples <KEY> <TYPE>:<VALUE> are required.\n");
}
bool AddKeysOperation::setArguments(const QStringList &args)
@@ -55,7 +64,7 @@ bool AddKeysOperation::setArguments(const QStringList &args)
}
if (next.isNull()) {
- std::cerr << "Missing value for key '" << qPrintable(current) << "'." << std::endl << std::endl;
+ qCCritical(addkeyslog) << "Missing value for key '" << qPrintable(current) << "'.";
return false;
}
@@ -85,7 +94,7 @@ int AddKeysOperation::execute() const
}
#ifdef WITH_TESTS
-bool AddKeysOperation::test() const
+void AddKeysOperation::unittest()
{
QVariantMap testMap;
QVariantMap subKeys;
@@ -101,118 +110,116 @@ bool AddKeysOperation::test() const
data.append(KeyValuePair(QLatin1String("bool-false"), QString::fromLatin1("bool:false")));
data.append(KeyValuePair(QLatin1String("int"), QString::fromLatin1("int:42")));
data.append(KeyValuePair(QLatin1String("qstring"), QString::fromLatin1("QString:test string.")));
- data.append(KeyValuePair(QLatin1String("qbytearray"), QString::fromLatin1("QByteArray:test array.")));
-
- data.append(KeyValuePair(QLatin1String("subkeys/qbytearray"), QString::fromLatin1("QByteArray:test array.")));
- data.append(KeyValuePair(QLatin1String("subkeys/newsubkeys/qbytearray"), QString::fromLatin1("QByteArray:test array.")));
- data.append(KeyValuePair(QLatin1String("newsub/1/2/3/qbytearray"), QString::fromLatin1("QByteArray:test array.")));
- data.append(KeyValuePair(QLatin1String("newsub/1/2.1/3/qbytearray"), QString::fromLatin1("QByteArray:test array.")));
+ data.append(
+ KeyValuePair(QLatin1String("qbytearray"), QString::fromLatin1("QByteArray:test array.")));
+
+ data.append(KeyValuePair(QLatin1String("subkeys/qbytearray"),
+ QString::fromLatin1("QByteArray:test array.")));
+ data.append(KeyValuePair(QLatin1String("subkeys/newsubkeys/qbytearray"),
+ QString::fromLatin1("QByteArray:test array.")));
+ data.append(KeyValuePair(QLatin1String("newsub/1/2/3/qbytearray"),
+ QString::fromLatin1("QByteArray:test array.")));
+ data.append(KeyValuePair(QLatin1String("newsub/1/2.1/3/qbytearray"),
+ QString::fromLatin1("QByteArray:test array.")));
QVariantMap result = AddKeysData{data}.addKeys(testMap);
- if (result.count() != 9)
- return false;
+ QCOMPARE(result.count(), 9);
// subkeys:
QVariantMap cur = result.value(QLatin1String("subkeys")).toMap();
- if (cur.count() != 4
- || !cur.contains(QLatin1String("qbytearray"))
- || !cur.contains(QLatin1String("testbool"))
- || !cur.contains(QLatin1String("subsubkeys"))
- || !cur.contains(QLatin1String("newsubkeys")))
- return false;
+ QCOMPARE(cur.count(), 4);
+ QVERIFY(cur.contains(QLatin1String("qbytearray")));
+ QVERIFY(cur.contains(QLatin1String("testbool")));
+ QVERIFY(cur.contains(QLatin1String("subsubkeys")));
+ QVERIFY(cur.contains(QLatin1String("newsubkeys")));
// subkeys/newsubkeys:
QVariantMap tmp = cur;
cur = cur.value(QLatin1String("newsubkeys")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("qbytearray")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("qbytearray")));
// subkeys/subsubkeys:
cur = tmp.value(QLatin1String("subsubkeys")).toMap();
- if (cur.count() != 0)
- return false;
+ QVERIFY(cur.isEmpty());
// newsub:
cur = result.value(QLatin1String("newsub")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("1")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("1")));
// newsub/1:
cur = cur.value(QLatin1String("1")).toMap();
- if (cur.count() != 2
- || !cur.contains(QLatin1String("2"))
- || !cur.contains(QLatin1String("2.1")))
- return false;
+ QCOMPARE(cur.count(), 2);
+ QVERIFY(cur.contains(QLatin1String("2")));
+ QVERIFY(cur.contains(QLatin1String("2.1")));
// newsub/1/2:
tmp = cur;
cur = cur.value(QLatin1String("2")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("3")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("3")));
// newsub/1/2/3:
cur = cur.value(QLatin1String("3")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("qbytearray")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("qbytearray")));
// newsub/1/2.1:
cur = tmp.value(QLatin1String("2.1")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("3")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("3")));
// newsub/1/2.1/3:
cur = cur.value(QLatin1String("3")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("qbytearray")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("qbytearray")));
// subkeys2:
cur = result.value(QLatin1String("subkeys2")).toMap();
- if (cur.count() != 0)
- return false;
+ QVERIFY(cur.isEmpty());
// values:
- if (!result.contains(QLatin1String("bool-true")) || !result.value(QLatin1String("bool-true")).toBool())
- return false;
- if (!result.contains(QLatin1String("bool-false")) || result.value(QLatin1String("bool-false")).toBool())
- return false;
- if (!result.contains(QLatin1String("int")) || result.value(QLatin1String("int")).toInt() != 42)
- return false;
- if (!result.contains(QLatin1String("qstring"))
- || result.value(QLatin1String("qstring")).toString() != QLatin1String("test string."))
- return false;
- if (!result.contains(QLatin1String("qbytearray"))
- || result.value(QLatin1String("qbytearray")).toByteArray() != "test array.")
- return false;
+ QVERIFY(result.contains(QLatin1String("bool-true")));
+ QVERIFY(result.value(QLatin1String("bool-true")).toBool());
+
+ QVERIFY(result.contains(QLatin1String("bool-false")));
+ QVERIFY(!result.value(QLatin1String("bool-false")).toBool());
+
+ QVERIFY(result.contains(QLatin1String("int")));
+ QCOMPARE(result.value(QLatin1String("int")).toInt(), 42);
+ QVERIFY(result.contains(QLatin1String("qstring")));
+ QCOMPARE(result.value(QLatin1String("qstring")).toString(), QLatin1String("test string."));
+ QVERIFY(result.contains(QLatin1String("qbytearray")));
+ QCOMPARE(result.value(QLatin1String("qbytearray")).toByteArray(), "test array.");
// Make sure we do not overwrite data:
// preexisting:
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Cannot add key .* which already exists."));
+
data.clear();
data.append(KeyValuePair(QLatin1String("testint"), QString::fromLatin1("int:4")));
result = AddKeysData{data}.addKeys(testMap);
- if (!result.isEmpty())
- return false;
+ QVERIFY(result.isEmpty());
+
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Cannot add key .* which already exists."));
data.clear();
data.append(KeyValuePair(QLatin1String("subkeys/testbool"), QString::fromLatin1("int:24")));
result = AddKeysData{data}.addKeys(testMap);
- if (!result.isEmpty())
- return false;
+ QVERIFY(result.isEmpty());
+
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Cannot add key .* which already exists."));
// data inserted before:
data.clear();
data.append(KeyValuePair(QLatin1String("bool-true"), QString::fromLatin1("bool:trUe")));
data.append(KeyValuePair(QLatin1String("bool-true"), QString::fromLatin1("bool:trUe")));
result = AddKeysData{data}.addKeys(testMap);
- if (!result.isEmpty())
- return false;
-
- return true;
+ QVERIFY(result.isEmpty());
}
#endif
@@ -236,14 +243,16 @@ QVariantMap AddKeysData::addKeys(const QVariantMap &map) const
// insert
Q_ASSERT(stack.count() == p.key.count());
if (stack.last().contains(p.key.last())) {
- std::cerr << "DEBUG: Adding key " << qPrintable(p.key.join(QLatin1Char('/'))) << " which already exists." << std::endl;
+ qCCritical(addkeyslog) << "Cannot add key" << qPrintable(p.key.join(QLatin1Char('/')))
+ << "which already exists.";
return QVariantMap();
}
stack.last().insert(p.key.last(), p.value);
// Generate new resultset by folding maps back in:
QVariantMap foldBack = stack.takeLast();
- for (int i = p.key.count() - 2; i >= 0; --i) { // skip last key, that is already taken care of
+ for (int i = p.key.count() - 2; i >= 0;
+ --i) { // skip last key, that is already taken care of
const QString k = p.key.at(i);
QVariantMap current = stack.takeLast();
current.insert(k, foldBack);
diff --git a/src/tools/sdktool/addkeysoperation.h b/src/tools/sdktool/addkeysoperation.h
index 9623d715045..47e6f881992 100644
--- a/src/tools/sdktool/addkeysoperation.h
+++ b/src/tools/sdktool/addkeysoperation.h
@@ -47,7 +47,8 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
+
#endif
private:
diff --git a/src/tools/sdktool/addkitoperation.cpp b/src/tools/sdktool/addkitoperation.cpp
index 4a326255e1a..f7d7864bcd2 100644
--- a/src/tools/sdktool/addkitoperation.cpp
+++ b/src/tools/sdktool/addkitoperation.cpp
@@ -26,10 +26,10 @@
#include "addkitoperation.h"
#include "addcmakeoperation.h"
+#include "adddeviceoperation.h"
#include "addkeysoperation.h"
-#include "addtoolchainoperation.h"
#include "addqtoperation.h"
-#include "adddeviceoperation.h"
+#include "addtoolchainoperation.h"
#include "findkeyoperation.h"
#include "findvalueoperation.h"
#include "getoperation.h"
@@ -37,9 +37,14 @@
#include "settings.h"
+#include <QLoggingCategory>
#include <QRegularExpression>
-#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+Q_LOGGING_CATEGORY(addkitlog, "qtc.sdktool.operations.addkit", QtWarningMsg)
// Qt version file stuff:
const char PREFIX[] = "Profile.";
@@ -84,27 +89,29 @@ QString AddKitOperation::helpText() const
QString AddKitOperation::argumentsHelpText() const
{
return QString(
- " --id <ID> id of the new kit (required).\n"
- " --name <NAME> display name of the new kit (required).\n"
- " --icon <PATH> icon of the new kit.\n"
- " --debuggerid <ID> the id of the debugger to use.\n"
- " (not compatible with --debugger and --debuggerengine)\n"
- " --debuggerengine <ENGINE> debuggerengine of the new kit.\n"
- " --debugger <PATH> debugger of the new kit.\n"
- " --devicetype <TYPE> (run-)device type of the new kit (required).\n"
- " --device <ID> (run-)device id to use (optional).\n"
- " --builddevice <ID> build device id to use (optional).\n"
- " --sysroot <PATH> sysroot of the new kit.\n"
- " --toolchain <ID> tool chain of the new kit (obsolete!).\n"
- " --<LANG>toolchain <ID> tool chain for a language.\n"
- " --qt <ID> Qt of the new kit.\n"
- " --mkspec <PATH> mkspec of the new kit.\n"
- " --env <VALUE> add a custom environment setting. [may be repeated]\n"
- " --cmake <ID> set a cmake tool.\n"
- " --cmake-generator <GEN>:<EXTRA>:<TOOLSET>:<PLATFORM>\n"
- " set a cmake generator.\n"
- " --cmake-config <KEY:TYPE=VALUE> set a cmake configuration value [may be repeated]\n"
- " <KEY> <TYPE:VALUE> extra key value pairs\n");
+ " --id <ID> id of the new kit (required).\n"
+ " --name <NAME> display name of the new kit (required).\n"
+ " --icon <PATH> icon of the new kit.\n"
+ " --debuggerid <ID> the id of the debugger to use.\n"
+ " (not compatible with --debugger and "
+ "--debuggerengine)\n"
+ " --debuggerengine <ENGINE> debuggerengine of the new kit.\n"
+ " --debugger <PATH> debugger of the new kit.\n"
+ " --devicetype <TYPE> (run-)device type of the new kit (required).\n"
+ " --device <ID> (run-)device id to use (optional).\n"
+ " --builddevice <ID> build device id to use (optional).\n"
+ " --sysroot <PATH> sysroot of the new kit.\n"
+ " --toolchain <ID> tool chain of the new kit (obsolete!).\n"
+ " --<LANG>toolchain <ID> tool chain for a language.\n"
+ " --qt <ID> Qt of the new kit.\n"
+ " --mkspec <PATH> mkspec of the new kit.\n"
+ " --env <VALUE> add a custom environment setting. [may be repeated]\n"
+ " --cmake <ID> set a cmake tool.\n"
+ " --cmake-generator <GEN>:<EXTRA>:<TOOLSET>:<PLATFORM>\n"
+ " set a cmake generator.\n"
+ " --cmake-config <KEY:TYPE=VALUE> set a cmake configuration value [may be "
+ "repeated]\n"
+ " <KEY> <TYPE:VALUE> extra key value pairs\n");
}
bool AddKitOperation::setArguments(const QStringList &args)
@@ -144,7 +151,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
bool ok;
m_debuggerEngine = next.toInt(&ok);
if (!ok) {
- std::cerr << "Debugger type is not an integer!" << std::endl;
+ qCCritical(addkitlog) << "Debugger type is not an integer!";
return false;
}
continue;
@@ -208,11 +215,11 @@ bool AddKitOperation::setArguments(const QStringList &args)
const QString lang = tmp2.isEmpty() ? QString("Cxx") : tmp2;
if (next.isEmpty()) {
- std::cerr << "Empty langid for toolchain given." << std::endl << std::endl;
+ qCCritical(addkitlog) << "Empty langid for toolchain given.";
return false;
}
if (m_tcs.contains(lang)) {
- std::cerr << "No langid for toolchain given twice." << std::endl << std::endl;
+ qCCritical(addkitlog) << "No langid for toolchain given twice.";
return false;
}
m_tcs.insert(lang, next);
@@ -284,13 +291,13 @@ bool AddKitOperation::setArguments(const QStringList &args)
}
if (m_id.isEmpty())
- std::cerr << "No id given for kit." << std::endl << std::endl;
+ qCCritical(addkitlog) << "No id given for kit.";
if (m_displayName.isEmpty())
- std::cerr << "No name given for kit." << std::endl << std::endl;
+ qCCritical(addkitlog) << "No name given for kit.";
if (m_deviceType.isEmpty())
- std::cerr << "No devicetype given for kit." << std::endl << std::endl;
+ qCCritical(addkitlog) << "No devicetype given for kit.";
if (!m_debuggerId.isEmpty() && (!m_debugger.isEmpty() || m_debuggerEngine != 0)) {
- std::cerr << "Cannot set both debugger id and debugger/debuggerengine." << std::endl << std::endl;
+ qCCritical(addkitlog) << "Cannot set both debugger id and debugger/debuggerengine.";
return false;
}
@@ -311,29 +318,45 @@ int AddKitOperation::execute() const
}
#ifdef WITH_TESTS
-bool AddKitOperation::test() const
+void AddKitOperation::unittest()
{
AddKitData baseData;
- baseData.m_id ="testId";
+ baseData.m_id = "testId";
baseData.m_displayName = "Test Kit";
baseData.m_icon = "/tmp/icon.png";
baseData.m_debuggerEngine = 1;
baseData.m_debugger = "/usr/bin/gdb-test";
baseData.m_deviceType = "Desktop";
- baseData.m_device = "{dev-id}";
+ baseData.m_device = "{dev-id}";
baseData.m_qt = "{qt-id}";
- baseData.m_mkspec ="unsupported/mkspec";
+ baseData.m_mkspec = "unsupported/mkspec";
baseData.m_extra = {{"PE.Profile.Data/extraData", QVariant("extraValue")}};
QVariantMap map = initializeKits();
QVariantMap tcMap = AddToolChainData::initializeToolChains();
- tcMap = AddToolChainData{"{tc-id}", "langId", "TC", "/usr/bin/gcc",
- "x86-linux-generic-elf-32bit", "x86-linux-generic-elf-32bit", {}}
- .addToolChain(tcMap);
+ AddToolChainData atcd;
+ atcd.m_id = "{tc-id}";
+ atcd.m_languageId = "langId";
+ atcd.m_displayName = "TC";
+ atcd.m_path = "/usr/bin/gcc";
+ atcd.m_targetAbi = "x86-linux-generic-elf-32bit";
+ atcd.m_supportedAbis = "x86-linux-generic-elf-32bit";
+ atcd.m_extra = {};
+
+ tcMap = atcd.addToolChain(tcMap);
QVariantMap qtMap = AddQtData::initializeQtVersions();
- qtMap = AddQtData{"{qt-id}", "Qt", "desktop-qt", "/usr/bin/qmake", {}, {}}.addQt(qtMap);
+ AddQtData aqtd;
+
+ aqtd.m_id = "{qt-id}";
+ aqtd.m_displayName = "Qt";
+ aqtd.m_type = "desktop-qt";
+ aqtd.m_qmake = "/usr/bin/qmake";
+ aqtd.m_abis = {};
+ aqtd.m_extra = {};
+
+ qtMap = aqtd.addQt(qtMap);
QVariantMap devMap = AddDeviceOperation::initializeDevices();
AddDeviceData devData;
@@ -358,159 +381,119 @@ bool AddKitOperation::test() const
const QStringList env = {"TEST=1", "PATH"};
- if (map.count() != 3)
- return false;
- if (!map.contains(VERSION))
- return false;
- if (map.value(VERSION).toInt() != 1)
- return false;
- if (!map.contains(COUNT))
- return false;
- if (map.value(COUNT).toInt() != 0)
- return false;
- if (!map.contains(DEFAULT))
- return false;
- if (!map.value(DEFAULT).toString().isEmpty())
- return false;
+ QCOMPARE(map.count(), 3);
+ QVERIFY(map.contains(VERSION));
+ QCOMPARE(map.value(VERSION).toInt(), 1);
+ QVERIFY(map.contains(COUNT));
+ QCOMPARE(map.value(COUNT).toInt(), 0);
+ QVERIFY(map.contains(DEFAULT));
+ QVERIFY(map.value(DEFAULT).toString().isEmpty());
QHash<QString, QString> tcs;
tcs.insert("Cxx", "{tcXX-id}");
// Fail if TC is not there:
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression(
+ "Error: Toolchain .* for language Cxx does not exist."));
+
AddKitData kitData = baseData;
kitData.m_tcs = tcs;
QVariantMap empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (!empty.isEmpty())
- return false;
+ QVERIFY(empty.isEmpty());
// Do not fail if TC is an ABI:
tcs.clear();
tcs.insert("C", "x86-linux-generic-elf-64bit");
kitData = baseData;
kitData.m_tcs = tcs;
empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (empty.isEmpty())
- return false;
+ QVERIFY(!empty.isEmpty());
// QTCREATORBUG-11983, mach_o was not covered by the first attempt to fix this.
tcs.insert("D", "x86-macos-generic-mach_o-64bit");
kitData = baseData;
kitData.m_tcs = tcs;
empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (empty.isEmpty())
- return false;
+ QVERIFY(!empty.isEmpty());
tcs.clear();
tcs.insert("Cxx", "{tc-id}");
// Fail if Qt is not there:
+ QTest::ignoreMessage(QtCriticalMsg, QRegularExpression("Error: Qt .* does not exist."));
+
kitData = baseData;
kitData.m_qt = "{qtXX-id}";
empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (!empty.isEmpty())
- return false;
+ QVERIFY(empty.isEmpty());
// Fail if dev is not there:
+ QTest::ignoreMessage(QtCriticalMsg, QRegularExpression("Error: Device .* does not exist."));
+
kitData = baseData;
kitData.m_device = "{devXX-id}";
empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (!empty.isEmpty())
- return false;
+ QVERIFY(empty.isEmpty());
// Profile 0:
kitData = baseData;
kitData.m_tcs = tcs;
map = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (map.count() != 4)
- return false;
- if (!map.contains(VERSION))
- return false;
- if (map.value(VERSION).toInt() != 1)
- return false;
- if (!map.contains(COUNT))
- return false;
- if (map.value(COUNT).toInt() != 1)
- return false;
- if (!map.contains(DEFAULT))
- return false;
- if (map.value(DEFAULT).toString() != "testId")
- return false;
- if (!map.contains("Profile.0"))
- return false;
+ QCOMPARE(map.count(), 4);
+ QVERIFY(map.contains(VERSION));
+ QCOMPARE(map.value(VERSION).toInt(), 1);
+ QVERIFY(map.contains(COUNT));
+ QCOMPARE(map.value(COUNT).toInt(), 1);
+ QVERIFY(map.contains(DEFAULT));
+ QCOMPARE(map.value(DEFAULT).toString(), "testId");
+ QVERIFY(map.contains("Profile.0"));
QVariantMap profile0 = map.value("Profile.0").toMap();
- if (profile0.count() != 6)
- return false;
-
- if (!profile0.contains(ID))
- return false;
- if (profile0.value(ID).toString() != "testId")
- return false;
- if (!profile0.contains(DISPLAYNAME))
- return false;
- if (profile0.value(DISPLAYNAME).toString() != "Test Kit")
- return false;
- if (!profile0.contains(ICON))
- return false;
- if (profile0.value(ICON).toString() != "/tmp/icon.png")
- return false;
- if (!profile0.contains(DATA))
- return false;
- if (profile0.value(DATA).type() != QVariant::Map)
- return false;
- if (!profile0.contains(AUTODETECTED))
- return false;
- if (profile0.value(AUTODETECTED).toBool() != true)
- return false;
- if (!profile0.contains(SDK))
- return false;
- if (profile0.value(SDK).toBool() != true)
- return false;
+ QCOMPARE(profile0.count(), 6);
+ QVERIFY(profile0.contains(ID));
+ QCOMPARE(profile0.value(ID).toString(), "testId");
+ QVERIFY(profile0.contains(DISPLAYNAME));
+ QCOMPARE(profile0.value(DISPLAYNAME).toString(), "Test Kit");
+ QVERIFY(profile0.contains(ICON));
+ QCOMPARE(profile0.value(ICON).toString(), "/tmp/icon.png");
+ QVERIFY(profile0.contains(DATA));
+ QCOMPARE(profile0.value(DATA).type(), QVariant::Map);
+ QVERIFY(profile0.contains(AUTODETECTED));
+ QCOMPARE(profile0.value(AUTODETECTED).toBool(), true);
+ QVERIFY(profile0.contains(SDK));
+ QCOMPARE(profile0.value(SDK).toBool(), true);
QVariantMap data = profile0.value(DATA).toMap();
- if (data.count() != 7)
- return false;
- if (!data.contains(DEBUGGER))
- return false;
- if (data.value(DEBUGGER).type() != QVariant::Map)
- return false;
- if (!data.contains(DEVICE_TYPE))
- return false;
- if (data.value(DEVICE_TYPE).toString() != "Desktop")
- return false;
- if (!data.contains(TOOLCHAIN))
- return false;
- if (!data.contains(QT))
- return false;
- if (data.value(QT).toString() != "SDK.{qt-id}")
- return false;
- if (!data.contains(MKSPEC))
- return false;
- if (data.value(MKSPEC).toString() != "unsupported/mkspec")
- return false;
- if (!data.contains("extraData"))
- return false;
- if (data.value("extraData").toString() != "extraValue")
- return false;
+ QCOMPARE(data.count(), 7);
+ QVERIFY(data.contains(DEBUGGER));
+ QCOMPARE(data.value(DEBUGGER).type(), QVariant::Map);
+ QVERIFY(data.contains(DEVICE_TYPE));
+ QCOMPARE(data.value(DEVICE_TYPE).toString(), "Desktop");
+ QVERIFY(data.contains(TOOLCHAIN));
+ QVERIFY(data.contains(QT));
+ QCOMPARE(data.value(QT).toString(), "SDK.{qt-id}");
+ QVERIFY(data.contains(MKSPEC));
+ QCOMPARE(data.value(MKSPEC).toString(), "unsupported/mkspec");
+ QVERIFY(data.contains("extraData"));
+ QCOMPARE(data.value("extraData").toString(), "extraValue");
QVariantMap tcOutput = data.value(TOOLCHAIN).toMap();
- if (tcOutput.count() != 1)
- return false;
- if (!tcOutput.contains("Cxx"))
- return false;
- if (tcOutput.value("Cxx") != "{tc-id}")
- return false;
+ QCOMPARE(tcOutput.count(), 1);
+ QVERIFY(tcOutput.contains("Cxx"));
+ QCOMPARE(tcOutput.value("Cxx"), "{tc-id}");
// Ignore exist ids:
+ QTest::ignoreMessage(QtCriticalMsg, QRegularExpression("Error: Id .* already defined as kit."));
+
kitData = baseData;
kitData.m_displayName = "Test Qt Version X";
kitData.m_icon = "/tmp/icon3.png";
kitData.m_debugger = "/usr/bin/gdb-test3";
kitData.m_tcs = tcs;
QVariantMap result = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (!result.isEmpty())
- return false;
+ QVERIFY(result.isEmpty());
// Profile 1: Make sure name is unique:
kitData = baseData;
@@ -523,100 +506,56 @@ bool AddKitOperation::test() const
kitData.m_tcs = tcs;
map = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (map.count() != 5)
- return false;
- if (!map.contains(VERSION) )
- return false;
- if (map.value(VERSION).toInt() != 1)
- return false;
- if (!map.contains(COUNT) )
- return false;
- if (map.value(COUNT).toInt() != 2)
- return false;
- if (!map.contains(DEFAULT) )
- return false;
- if (map.value(DEFAULT).toInt() != 0)
- return false;
- if (!map.contains("Profile.0"))
- return false;
- if (!map.contains("Profile.1"))
- return false;
- if (map.value("Profile.0") != profile0)
- return false;
+ QCOMPARE(map.count(), 5);
+ QVERIFY(map.contains(VERSION));
+ QCOMPARE(map.value(VERSION).toInt(), 1);
+ QVERIFY(map.contains(COUNT));
+ QCOMPARE(map.value(COUNT).toInt(), 2);
+ QVERIFY(map.contains(DEFAULT));
+ QCOMPARE(map.value(DEFAULT).toInt(), 0);
+ QVERIFY(map.contains("Profile.0"));
+ QVERIFY(map.contains("Profile.1"));
+ QCOMPARE(map.value("Profile.0"), profile0);
QVariantMap profile1 = map.value("Profile.1").toMap();
- if (profile1.count() != 6)
- return false;
- if (!profile1.contains(ID) )
- return false;
- if (profile1.value(ID).toString() != "testId2")
- return false;
- if (!profile1.contains(DISPLAYNAME) )
- return false;
- if (profile1.value(DISPLAYNAME).toString() != "Test Kit2")
- return false;
- if (!profile1.contains(ICON) )
- return false;
- if (profile1.value(ICON).toString() != "/tmp/icon2.png")
- return false;
- if (!profile1.contains(DATA) )
- return false;
- if (profile1.value(DATA).type() != QVariant::Map)
- return false;
- if (!profile1.contains(AUTODETECTED) )
- return false;
- if (profile1.value(AUTODETECTED).toBool() != true)
- return false;
- if (!profile1.contains(SDK) )
- return false;
- if (profile1.value(SDK).toBool() != true)
- return false;
+ QCOMPARE(profile1.count(), 6);
+ QVERIFY(profile1.contains(ID));
+ QCOMPARE(profile1.value(ID).toString(), "testId2");
+ QVERIFY(profile1.contains(DISPLAYNAME));
+ QCOMPARE(profile1.value(DISPLAYNAME).toString(), "Test Kit2");
+ QVERIFY(profile1.contains(ICON));
+ QCOMPARE(profile1.value(ICON).toString(), "/tmp/icon2.png");
+ QVERIFY(profile1.contains(DATA));
+ QCOMPARE(profile1.value(DATA).type(), QVariant::Map);
+ QVERIFY(profile1.contains(AUTODETECTED));
+ QCOMPARE(profile1.value(AUTODETECTED).toBool(), true);
+ QVERIFY(profile1.contains(SDK));
+ QCOMPARE(profile1.value(SDK).toBool(), true);
data = profile1.value(DATA).toMap();
- if (data.count() != 9)
- return false;
- if (!data.contains(DEBUGGER) )
- return false;
- if (data.value(DEBUGGER).type() != QVariant::Map)
- return false;
- if (!data.contains(DEVICE_TYPE) )
- return false;
- if (data.value(DEVICE_TYPE).toString() != "Desktop")
- return false;
- if (!data.contains(DEVICE_ID) )
- return false;
- if (data.value(DEVICE_ID).toString() != "{dev-id}")
- return false;
- if (!data.contains(SYSROOT) )
- return false;
- if (data.value(SYSROOT).toString() != "/sys/root//")
- return false;
- if (!data.contains(TOOLCHAIN))
- return false;
- if (!data.contains(QT) )
- return false;
- if (data.value(QT).toString() != "SDK.{qt-id}")
- return false;
- if (!data.contains(MKSPEC) )
- return false;
- if (data.value(MKSPEC).toString() != "unsupported/mkspec")
- return false;
- if (!data.contains(ENV) )
- return false;
- if (data.value(ENV).toStringList() != env)
- return false;
- if (!data.contains("extraData") )
- return false;
- if (data.value("extraData").toString() != "extraValue")
- return false;
+ QCOMPARE(data.count(), 9);
+ QVERIFY(data.contains(DEBUGGER));
+ QCOMPARE(data.value(DEBUGGER).type(), QVariant::Map);
+ QVERIFY(data.contains(DEVICE_TYPE));
+ QCOMPARE(data.value(DEVICE_TYPE).toString(), "Desktop");
+ QVERIFY(data.contains(DEVICE_ID));
+ QCOMPARE(data.value(DEVICE_ID).toString(), "{dev-id}");
+ QVERIFY(data.contains(SYSROOT));
+ QCOMPARE(data.value(SYSROOT).toString(), "/sys/root//");
+ QVERIFY(data.contains(TOOLCHAIN));
+ QVERIFY(data.contains(QT));
+ QCOMPARE(data.value(QT).toString(), "SDK.{qt-id}");
+ QVERIFY(data.contains(MKSPEC));
+ QCOMPARE(data.value(MKSPEC).toString(), "unsupported/mkspec");
+ QVERIFY(data.contains(ENV));
+ QCOMPARE(data.value(ENV).toStringList(), env);
+ QVERIFY(data.contains("extraData"));
+ QCOMPARE(data.value("extraData").toString(), "extraValue");
tcOutput = data.value(TOOLCHAIN).toMap();
- if (tcOutput.count() != 1)
- return false;
- if (!tcOutput.contains("Cxx") )
- return false;
- if (tcOutput.value("Cxx") != "{tc-id}")
- return false;
+ QCOMPARE(tcOutput.count(), 1);
+ QVERIFY(tcOutput.contains("Cxx"));
+ QCOMPARE(tcOutput.value("Cxx"), "{tc-id}");
// Profile 2: Test debugger id:
kitData = baseData;
@@ -627,68 +566,38 @@ bool AddKitOperation::test() const
kitData.m_env = env;
map = kitData.addKit(map, tcMap, qtMap, devMap, {});
- if (map.count() != 6)
- return false;
- if (!map.contains(VERSION) )
- return false;
- if (map.value(VERSION).toInt() != 1)
- return false;
- if (!map.contains(COUNT) )
- return false;
- if (map.value(COUNT).toInt() != 3)
- return false;
- if (!map.contains(DEFAULT) )
- return false;
- if (map.value(DEFAULT).toInt() != 0)
- return false;
- if (!map.contains("Profile.0"))
- return false;
- if (!map.contains("Profile.1"))
- return false;
- if (!map.contains("Profile.2"))
- return false;
- if (map.value("Profile.0") != profile0)
- return false;
- if (map.value("Profile.1") != profile1)
- return false;
+ QCOMPARE(map.count(), 6);
+ QVERIFY(map.contains(VERSION));
+ QCOMPARE(map.value(VERSION).toInt(), 1);
+ QVERIFY(map.contains(COUNT));
+ QCOMPARE(map.value(COUNT).toInt(), 3);
+ QVERIFY(map.contains(DEFAULT));
+ QCOMPARE(map.value(DEFAULT).toInt(), 0);
+ QVERIFY(map.contains("Profile.0"));
+ QVERIFY(map.contains("Profile.1"));
+ QVERIFY(map.contains("Profile.2"));
+ QCOMPARE(map.value("Profile.0"), profile0);
+ QCOMPARE(map.value("Profile.1"), profile1);
QVariantMap profile2 = map.value("Profile.2").toMap();
- if (profile2.count() != 6)
- return false;
- if (!profile2.contains(ID) )
- return false;
- if (profile2.value(ID).toString() != "test with debugger Id")
- return false;
- if (!profile2.contains(DISPLAYNAME) )
- return false;
- if (profile2.value(DISPLAYNAME).toString() != "Test debugger Id")
- return false;
- if (!profile2.contains(ICON) )
- return false;
- if (profile2.value(ICON).toString() != "/tmp/icon2.png")
- return false;
- if (!profile2.contains(DATA) )
- return false;
- if (profile2.value(DATA).type() != QVariant::Map)
- return false;
- if (!profile2.contains(AUTODETECTED) )
- return false;
- if (profile2.value(AUTODETECTED).toBool() != true)
- return false;
- if (!profile2.contains(SDK) )
- return false;
- if (profile2.value(SDK).toBool() != true)
- return false;
+ QCOMPARE(profile2.count(), 6);
+ QVERIFY(profile2.contains(ID));
+ QCOMPARE(profile2.value(ID).toString(), "test with debugger Id");
+ QVERIFY(profile2.contains(DISPLAYNAME));
+ QCOMPARE(profile2.value(DISPLAYNAME).toString(), "Test debugger Id");
+ QVERIFY(profile2.contains(ICON));
+ QCOMPARE(profile2.value(ICON).toString(), "/tmp/icon2.png");
+ QVERIFY(profile2.contains(DATA));
+ QCOMPARE(profile2.value(DATA).type(), QVariant::Map);
+ QVERIFY(profile2.contains(AUTODETECTED));
+ QCOMPARE(profile2.value(AUTODETECTED).toBool(), true);
+ QVERIFY(profile2.contains(SDK));
+ QCOMPARE(profile2.value(SDK).toBool(), true);
data = profile2.value(DATA).toMap();
- if (data.count() != 7)
- return false;
- if (!data.contains(DEBUGGER))
- return false;
- if (data.value(DEBUGGER).toString() != "debugger Id")
- return false;
-
- return true;
+ QCOMPARE(data.count(), 7);
+ QVERIFY(data.contains(DEBUGGER));
+ QCOMPARE(data.value(DEBUGGER).toString(), "debugger Id");
}
#endif
@@ -702,9 +611,11 @@ QVariantMap AddKitData::addKit(const QVariantMap &map) const
return AddKitData::addKit(map, tcMap, qtMap, devMap, cmakeMap);
}
-QVariantMap AddKitData::addKit(const QVariantMap &map, const QVariantMap &tcMap,
- const QVariantMap &qtMap, const QVariantMap &devMap,
- const QVariantMap &cmakeMap) const
+QVariantMap AddKitData::addKit(const QVariantMap &map,
+ const QVariantMap &tcMap,
+ const QVariantMap &qtMap,
+ const QVariantMap &devMap,
+ const QVariantMap &cmakeMap) const
{
// Sanity check: Make sure autodetection source is not in use already:
const QStringList valueKeys = FindValueOperation::findValue(map, QVariant(m_id));
@@ -716,16 +627,17 @@ QVariantMap AddKitData::addKit(const QVariantMap &map, const QVariantMap &tcMap,
}
}
if (hasId) {
- std::cerr << "Error: Id " << qPrintable(m_id) << " already defined as kit." << std::endl;
+ qCCritical(addkitlog) << "Error: Id" << qPrintable(m_id) << "already defined as kit.";
return QVariantMap();
}
for (auto i = m_tcs.constBegin(); i != m_tcs.constEnd(); ++i) {
if (!i.value().isEmpty() && !AddToolChainOperation::exists(tcMap, i.value())) {
- const QRegularExpression abiRegExp("^[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-(8|16|32|64|128)bit$");
+ const QRegularExpression abiRegExp(
+ "^[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-(8|16|32|64|128)bit$");
if (!abiRegExp.match(i.value()).hasMatch()) {
- std::cerr << "Error: Toolchain " << qPrintable(i.value())
- << " for language " << qPrintable(i.key()) << " does not exist." << std::endl;
+ qCCritical(addkitlog) << "Error: Toolchain" << qPrintable(i.value())
+ << "for language" << qPrintable(i.key()) << "does not exist.";
return QVariantMap();
}
}
@@ -735,15 +647,15 @@ QVariantMap AddKitData::addKit(const QVariantMap &map, const QVariantMap &tcMap,
if (!qtId.isEmpty() && !qtId.startsWith("SDK."))
qtId = QString::fromLatin1("SDK.") + m_qt;
if (!qtId.isEmpty() && !AddQtData::exists(qtMap, qtId)) {
- std::cerr << "Error: Qt " << qPrintable(qtId) << " does not exist." << std::endl;
+ qCCritical(addkitlog) << "Error: Qt" << qPrintable(qtId) << "does not exist.";
return QVariantMap();
}
if (!m_device.isEmpty() && !AddDeviceOperation::exists(devMap, m_device)) {
- std::cerr << "Error: Device " << qPrintable(m_device) << " does not exist." << std::endl;
+ qCCritical(addkitlog) << "Error: Device" << qPrintable(m_device) << "does not exist.";
return QVariantMap();
}
if (!m_buildDevice.isEmpty() && !AddDeviceOperation::exists(devMap, m_buildDevice)) {
- std::cerr << "Error: Device " << qPrintable(m_buildDevice) << " does not exist." << std::endl;
+ qCCritical(addkitlog) << "Error: Device" << qPrintable(m_buildDevice) << "does not exist.";
return QVariantMap();
}
@@ -752,7 +664,7 @@ QVariantMap AddKitData::addKit(const QVariantMap &map, const QVariantMap &tcMap,
qtId = "-1";
if (!m_cmakeId.isEmpty() && !AddCMakeData::exists(cmakeMap, m_cmakeId)) {
- std::cerr << "Error: CMake tool " << qPrintable(m_cmakeId) << " does not exist." << std::endl;
+ qCCritical(addkitlog) << "Error: CMake tool" << qPrintable(m_cmakeId) << "does not exist.";
return QVariantMap();
}
@@ -760,7 +672,7 @@ QVariantMap AddKitData::addKit(const QVariantMap &map, const QVariantMap &tcMap,
bool ok;
int count = GetOperation::get(map, COUNT).toInt(&ok);
if (!ok || count < 0) {
- std::cerr << "Error: Count found in kits file seems wrong." << std::endl;
+ qCCritical(addkitlog) << "Error: Count found in kits file seems wrong.";
return QVariantMap();
}
const QString kit = QString::fromLatin1(PREFIX) + QString::number(count);
@@ -784,7 +696,7 @@ QVariantMap AddKitData::addKit(const QVariantMap &map, const QVariantMap &tcMap,
data << KeyValuePair({kit, DATA, DEBUGGER, DEBUGGER_ENGINE}, QVariant(m_debuggerEngine));
data << KeyValuePair({kit, DATA, DEBUGGER, DEBUGGER_BINARY}, QVariant(m_debugger));
} else {
- data << KeyValuePair({kit, DATA, DEBUGGER }, QVariant(m_debuggerId));
+ data << KeyValuePair({kit, DATA, DEBUGGER}, QVariant(m_debuggerId));
}
}
@@ -795,7 +707,8 @@ QVariantMap AddKitData::addKit(const QVariantMap &map, const QVariantMap &tcMap,
if (!m_buildDevice.isNull())
data << KeyValuePair({kit, DATA, BUILDDEVICE_ID}, QVariant(m_buildDevice));
if (!m_sysRoot.isNull())
- data << KeyValuePair({kit, DATA, SYSROOT}, Utils::FilePath::fromUserInput(m_sysRoot).toVariant());
+ data << KeyValuePair({kit, DATA, SYSROOT},
+ Utils::FilePath::fromUserInput(m_sysRoot).toVariant());
for (auto i = m_tcs.constBegin(); i != m_tcs.constEnd(); ++i)
data << KeyValuePair({kit, DATA, TOOLCHAIN, i.key()}, QVariant(i.value()));
if (!qtId.isNull())
diff --git a/src/tools/sdktool/addkitoperation.h b/src/tools/sdktool/addkitoperation.h
index 3d3f3b8f5fd..c7cd23be30d 100644
--- a/src/tools/sdktool/addkitoperation.h
+++ b/src/tools/sdktool/addkitoperation.h
@@ -73,6 +73,7 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
+
#endif
};
diff --git a/src/tools/sdktool/addqtoperation.cpp b/src/tools/sdktool/addqtoperation.cpp
index 99eb3c78c0d..59f8850a936 100644
--- a/src/tools/sdktool/addqtoperation.cpp
+++ b/src/tools/sdktool/addqtoperation.cpp
@@ -35,7 +35,13 @@
#include <utils/filepath.h>
-#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(log, "qtc.sdktool.operations.addqt", QtWarningMsg)
using namespace Utils;
@@ -87,7 +93,7 @@ bool AddQtOperation::setArguments(const QStringList &args)
if (current == QLatin1String("--id")) {
if (next.isNull()) {
- std::cerr << "Error parsing after --id." << std::endl << std::endl;
+ qCCritical(log) << "Error parsing after --id.";
return false;
}
++i; // skip next;
@@ -97,7 +103,7 @@ bool AddQtOperation::setArguments(const QStringList &args)
if (current == QLatin1String("--name")) {
if (next.isNull()) {
- std::cerr << "Error parsing after --name." << std::endl << std::endl;
+ qCCritical(log) << "Error parsing after --name.";
return false;
}
++i; // skip next;
@@ -107,7 +113,7 @@ bool AddQtOperation::setArguments(const QStringList &args)
if (current == QLatin1String("--qmake")) {
if (next.isNull()) {
- std::cerr << "Error parsing after --qmake." << std::endl << std::endl;
+ qCCritical(log) << "Error parsing after --qmake.";
return false;
}
++i; // skip next;
@@ -117,7 +123,7 @@ bool AddQtOperation::setArguments(const QStringList &args)
if (current == QLatin1String("--type")) {
if (next.isNull()) {
- std::cerr << "Error parsing after --type." << std::endl << std::endl;
+ qCCritical(log) << "Error parsing after --type.";
return false;
}
++i; // skip next;
@@ -127,7 +133,7 @@ bool AddQtOperation::setArguments(const QStringList &args)
if (current == "--abis") {
if (next.isNull()) {
- std::cerr << "Error parsing after --abis." << std::endl << std::endl;
+ qCCritical(log) << "Error parsing after --abis.";
return false;
}
++i; // skip next;
@@ -136,29 +142,29 @@ bool AddQtOperation::setArguments(const QStringList &args)
}
if (next.isNull()) {
- std::cerr << "Unknown parameter: " << qPrintable(current) << std::endl << std::endl;
+ qCCritical(log) << "Unknown parameter: " << qPrintable(current);
return false;
}
++i; // skip next;
KeyValuePair pair(current, next);
if (!pair.value.isValid()) {
- std::cerr << "Error parsing: " << qPrintable(current) << " " << qPrintable(next) << std::endl << std::endl;
+ qCCritical(log) << "Error parsing: " << qPrintable(current) << " " << qPrintable(next);
return false;
}
m_extra << pair;
}
if (m_id.isEmpty())
- std::cerr << "Error no id was passed." << std::endl << std::endl;
+ qCCritical(log) << "Error no id was passed.";
if (m_displayName.isEmpty())
- std::cerr << "Error no display name was passed." << std::endl << std::endl;
+ qCCritical(log) << "Error no display name was passed.";
if (m_qmake.isEmpty())
- std::cerr << "Error no qmake was passed." << std::endl << std::endl;
+ qCCritical(log) << "Error no qmake was passed.";
if (m_type.isEmpty())
- std::cerr << "Error no type was passed." << std::endl << std::endl;
+ qCCritical(log) << "Error no type was passed.";
return !m_id.isEmpty() && !m_displayName.isEmpty() && !m_qmake.isEmpty() && !m_type.isEmpty();
}
@@ -178,93 +184,98 @@ int AddQtOperation::execute() const
}
#ifdef WITH_TESTS
-bool AddQtOperation::test() const
+void AddQtOperation::unittest()
{
- AddQtData qtData;
QVariantMap map = initializeQtVersions();
- if (map.count() != 1
- || !map.contains(QLatin1String(VERSION))
- || map.value(QLatin1String(VERSION)).toInt() != 1)
- return false;
-
-#if defined Q_OS_WIN
- qtData = {"{some-qt-id}", "Test Qt Version", "testType", "/tmp//../tmp/test\\qmake", {},
- {{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}}};
-#else
- qtData = {"{some-qt-id}", "Test Qt Version", "testType", "/tmp//../tmp/test/qmake", {},
- {{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}}};
-#endif
+ QCOMPARE(map.count(), 1);
+ QVERIFY(map.contains(QLatin1String(VERSION)));
+ QCOMPARE(map.value(QLatin1String(VERSION)).toInt(), 1);
+
+ AddQtData qtData;
+ qtData.m_id = "{some-qt-id}";
+ qtData.m_displayName = "Test Qt Version";
+ qtData.m_type = "testType";
+ qtData.m_qmake = "/tmp//../tmp/test/qmake";
+ qtData.m_abis = {};
+ qtData.m_extra = {{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}};
+
map = qtData.addQt(map);
- if (map.count() != 2
- || !map.contains(QLatin1String(VERSION))
- || map.value(QLatin1String(VERSION)).toInt() != 1
- || !map.contains(QLatin1String("QtVersion.0")))
- return false;
+ QCOMPARE(map.count(), 2);
+ QVERIFY(map.contains(QLatin1String(VERSION)));
+ QVERIFY(map.contains(QLatin1String("QtVersion.0")));
+ QCOMPARE(map.value(QLatin1String(VERSION)).toInt(),1);
QVariantMap version0 = map.value(QLatin1String("QtVersion.0")).toMap();
- if (version0.count() != 8
- || !version0.contains(QLatin1String(ID))
- || version0.value(QLatin1String(ID)).toInt() != -1
- || !version0.contains(QLatin1String(DISPLAYNAME))
- || version0.value(QLatin1String(DISPLAYNAME)).toString() != QLatin1String("Test Qt Version")
- || !version0.contains(QLatin1String(AUTODETECTED))
- || version0.value(QLatin1String(AUTODETECTED)).toBool() != true
- || !version0.contains(QLatin1String(AUTODETECTION_SOURCE))
- || version0.value(QLatin1String(AUTODETECTION_SOURCE)).toString() != QLatin1String("SDK.{some-qt-id}")
- || !version0.contains(QLatin1String(TYPE))
- || version0.value(QLatin1String(TYPE)).toString() != QLatin1String("testType")
- || !version0.contains(QLatin1String(ABIS))
- || version0.value(QLatin1String(ABIS)).toStringList() != QStringList()
- || !version0.contains(QLatin1String(QMAKE))
- || version0.value(QLatin1String(QMAKE)).toString() != QLatin1String("/tmp/test/qmake")
- || !version0.contains(QLatin1String("extraData"))
- || version0.value(QLatin1String("extraData")).toString() != QLatin1String("extraValue"))
- return false;
+ QCOMPARE(version0.count(), 8);
+ QVERIFY(version0.contains(QLatin1String(ID)));
+ QCOMPARE(version0.value(QLatin1String(ID)).toInt(), -1);
+ QVERIFY(version0.contains(QLatin1String(DISPLAYNAME)));
+ QCOMPARE(version0.value(QLatin1String(DISPLAYNAME)).toString(), QLatin1String("Test Qt Version"));
+ QVERIFY(version0.contains(QLatin1String(AUTODETECTED)));
+ QCOMPARE(version0.value(QLatin1String(AUTODETECTED)).toBool(), true);
+ QVERIFY(version0.contains(QLatin1String(AUTODETECTION_SOURCE)));
+ QCOMPARE(version0.value(QLatin1String(AUTODETECTION_SOURCE)).toString(), QLatin1String("SDK.{some-qt-id}"));
+ QVERIFY(version0.contains(QLatin1String(TYPE)));
+ QCOMPARE(version0.value(QLatin1String(TYPE)).toString(), QLatin1String("testType"));
+ QVERIFY(version0.contains(QLatin1String(ABIS)));
+ QCOMPARE(version0.value(QLatin1String(ABIS)).toStringList(), QStringList());
+ QVERIFY(version0.contains(QLatin1String(QMAKE)));
+ QCOMPARE(version0.value(QLatin1String(QMAKE)).toString(), QLatin1String("/tmp/test/qmake"));
+ QVERIFY(version0.contains(QLatin1String("extraData")));
+ QCOMPARE(version0.value(QLatin1String("extraData")).toString(), QLatin1String("extraValue"));
// Ignore existing ids:
- qtData = {"{some-qt-id}", "Test Qt Version2", "testType2", "/tmp/test/qmake2", {},
- {{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}}};
+ qtData.m_id = "{some-qt-id}";
+ qtData.m_displayName = "Test Qt Version2";
+ qtData.m_type = "testType2";
+ qtData.m_qmake = "/tmp/test/qmake2";
+ qtData.m_abis = {};
+ qtData.m_extra = {{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}};
+
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Error: Id .* already defined as Qt versions."));
+
QVariantMap result = qtData.addQt(map);
- if (!result.isEmpty())
- return false;
+ QVERIFY(result.isEmpty());
// add 2nd Qt version:
- qtData = {"testId2", "Test Qt Version", "testType3", "/tmp/test/qmake2", {},
- {{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}}};
+ qtData.m_id = "testId2";
+ qtData.m_displayName = "Test Qt Version";
+ qtData.m_type = "testType3";
+ qtData.m_qmake = "/tmp/test/qmake2";
+ qtData.m_abis = {};
+ qtData.m_extra = {{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}};
+
map = qtData.addQt(map);
- if (map.count() != 3
- || !map.contains(QLatin1String(VERSION))
- || map.value(QLatin1String(VERSION)).toInt() != 1
- || !map.contains(QLatin1String("QtVersion.0"))
- || !map.contains(QLatin1String("QtVersion.1")))
- return false;
- if (map.value(QLatin1String("QtVersion.0")) != version0)
- return false;
+ QCOMPARE(map.count(), 3);
+ QVERIFY(map.contains(QLatin1String(VERSION)));
+ QCOMPARE(map.value(QLatin1String(VERSION)).toInt(), 1);
+ QVERIFY(map.contains(QLatin1String("QtVersion.0")));
+ QVERIFY(map.contains(QLatin1String("QtVersion.1")));
+
+ QCOMPARE(map.value(QLatin1String("QtVersion.0")), version0);
QVariantMap version1 = map.value(QLatin1String("QtVersion.1")).toMap();
- if (version1.count() != 8
- || !version1.contains(QLatin1String(ID))
- || version1.value(QLatin1String(ID)).toInt() != -1
- || !version1.contains(QLatin1String(DISPLAYNAME))
- || version1.value(QLatin1String(DISPLAYNAME)).toString() != QLatin1String("Test Qt Version")
- || !version1.contains(QLatin1String(AUTODETECTED))
- || version1.value(QLatin1String(AUTODETECTED)).toBool() != true
- || !version1.contains(QLatin1String(AUTODETECTION_SOURCE))
- || version1.value(QLatin1String(AUTODETECTION_SOURCE)).toString() != QLatin1String("SDK.testId2")
- || !version1.contains(QLatin1String(TYPE))
- || version1.value(QLatin1String(TYPE)).toString() != QLatin1String("testType3")
- || !version1.contains(QLatin1String(ABIS))
- || version1.value(QLatin1String(ABIS)).toStringList() != QStringList()
- || !version1.contains(QLatin1String(QMAKE))
- || version1.value(QLatin1String(QMAKE)).toString() != QLatin1String("/tmp/test/qmake2")
- || !version1.contains(QLatin1String("extraData"))
- || version1.value(QLatin1String("extraData")).toString() != QLatin1String("extraValue"))
- return false;
-
- return true;
+ QCOMPARE(version1.count(), 8);
+ QVERIFY(version1.contains(QLatin1String(ID)));
+ QCOMPARE(version1.value(QLatin1String(ID)).toInt(), -1);
+ QVERIFY(version1.contains(QLatin1String(DISPLAYNAME)));
+ QCOMPARE(version1.value(QLatin1String(DISPLAYNAME)).toString(), QLatin1String("Test Qt Version"));
+ QVERIFY(version1.contains(QLatin1String(AUTODETECTED)));
+ QCOMPARE(version1.value(QLatin1String(AUTODETECTED)).toBool(), true);
+ QVERIFY(version1.contains(QLatin1String(AUTODETECTION_SOURCE)));
+ QCOMPARE(version1.value(QLatin1String(AUTODETECTION_SOURCE)).toString(), QLatin1String("SDK.testId2"));
+ QVERIFY(version1.contains(QLatin1String(TYPE)));
+ QCOMPARE(version1.value(QLatin1String(TYPE)).toString(), QLatin1String("testType3"));
+ QVERIFY(version1.contains(QLatin1String(ABIS)));
+ QCOMPARE(version1.value(QLatin1String(ABIS)).toStringList(), QStringList());
+ QVERIFY(version1.contains(QLatin1String(QMAKE)));
+ QCOMPARE(version1.value(QLatin1String(QMAKE)).toString(), QLatin1String("/tmp/test/qmake2"));
+ QVERIFY(version1.contains(QLatin1String("extraData")));
+ QCOMPARE(version1.value(QLatin1String("extraData")).toString(), QLatin1String("extraValue"));
}
#endif
@@ -274,7 +285,7 @@ QVariantMap AddQtData::addQt(const QVariantMap &map) const
// Sanity check: Make sure autodetection source is not in use already:
if (exists(map, sdkId)) {
- std::cerr << "Error: Id " << qPrintable(m_id) << " already defined as Qt versions." << std::endl;
+ qCCritical(log) << "Error: Id" << qPrintable(m_id) << "already defined as Qt versions.";
return QVariantMap();
}
diff --git a/src/tools/sdktool/addqtoperation.h b/src/tools/sdktool/addqtoperation.h
index d7269e32454..4f137431a0e 100644
--- a/src/tools/sdktool/addqtoperation.h
+++ b/src/tools/sdktool/addqtoperation.h
@@ -55,6 +55,8 @@ private:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+public:
+ static void unittest();
+ // TODO: Remove
#endif
};
diff --git a/src/tools/sdktool/addtoolchainoperation.cpp b/src/tools/sdktool/addtoolchainoperation.cpp
index aec304b647e..d305b3e7d4c 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;
diff --git a/src/tools/sdktool/addtoolchainoperation.h b/src/tools/sdktool/addtoolchainoperation.h
index 5e6ac39a7c2..e5eeca41aac 100644
--- a/src/tools/sdktool/addtoolchainoperation.h
+++ b/src/tools/sdktool/addtoolchainoperation.h
@@ -58,6 +58,7 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
+
#endif
};
diff --git a/src/tools/sdktool/addvalueoperation.cpp b/src/tools/sdktool/addvalueoperation.cpp
index a604409f611..08f9473a42a 100644
--- a/src/tools/sdktool/addvalueoperation.cpp
+++ b/src/tools/sdktool/addvalueoperation.cpp
@@ -33,6 +33,14 @@
#include <iomanip>
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(addvaluelog, "qtc.sdktool.operations.addvalue", QtWarningMsg)
+
namespace {
constexpr auto SUCCESS = 0;
constexpr auto FAILURE = !SUCCESS;
@@ -111,7 +119,7 @@ int AddValueOperation::execute() const
}
#ifdef WITH_TESTS
-bool AddValueOperation::test() const
+void AddValueOperation::unittest()
{
QVariantList testDataList;
testDataList.append(QLatin1String("Some String"));
@@ -127,40 +135,44 @@ bool AddValueOperation::test() const
QVariantMap testMap;
// add to empty map
- bool result = AddValueData{"some key", valueList}.appendListToMap(testMap);
+ AddValueData d;
+ d.m_key = "some key";
+ d.m_values = valueList;
- if (result)
- return false;
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Error: Could not retrieve value for key .*."));
+
+ QVERIFY(!d.appendListToMap(testMap));
testMap.insert(QLatin1String("someEmptyThing"), QVariantMap());
testMap.insert(QLatin1String("aKey"), "withAString");
// append to a value
- result = AddValueData{"aKey", valueList}.appendListToMap(testMap);
+ d.m_key = "aKey";
- if (result)
- return false;
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Error: Data stored in .* is not a QVariantList."));
+
+ QVERIFY(!d.appendListToMap(testMap));
testMap = AddKeysData{testKvpList}.addKeys(testMap);
// quick sanity check
- if (testMap.count() != 3 && testDataList.count() != 2 && testKvpList.count() != 3)
- return false;
+ QCOMPARE(testMap.count(), 3);
+ QCOMPARE(testDataList.count(), 2);
+ QCOMPARE(testKvpList.count(), 3);
// successful adding of values
- result = AddValueData{"test/bar", valueList}.appendListToMap(testMap);
- if (!result)
- return false;
+ d.m_key = "test/bar";
+ QVERIFY(d.appendListToMap(testMap));
const auto newList = qvariant_cast<QVariantList>(GetOperation::get(testMap, "test/bar"));
- if (newList.count() != (testDataList.count() + valueList.count()))
- return false;
+ QCOMPARE(newList.count(), (testDataList.count() + valueList.count()));
- if (!newList.contains(1860) || !newList.contains(QString("Some String"))
- || !newList.contains("ELIL") || !newList.contains(-1))
- return false;
-
- return true;
+ QVERIFY(newList.contains(1860));
+ QVERIFY(newList.contains(QString("Some String")));
+ QVERIFY(newList.contains("ELIL"));
+ QVERIFY(newList.contains(-1));
}
#endif
@@ -169,14 +181,14 @@ bool AddValueData::appendListToMap(QVariantMap &map) const
const QVariant data = GetOperation::get(map, m_key);
if (!data.isValid() || data.isNull()) {
- std::cerr << "Error: Could not retrieve value for key " << std::quoted(m_key.toStdString())
- << std::endl;
+ qCCritical(addvaluelog) << "Error: Could not retrieve value for key"
+ << m_key;
return false;
}
if (data.type() != QVariant::List) {
- std::cerr << "Error: Data stored in " << std::quoted(m_key.toStdString())
- << " is not a QVariantList." << std::endl;
+ qCCritical(addvaluelog) << "Error: Data stored in" << m_key
+ << "is not a QVariantList.";
return false;
}
diff --git a/src/tools/sdktool/addvalueoperation.h b/src/tools/sdktool/addvalueoperation.h
index df19f1f2357..010f5b7d67b 100644
--- a/src/tools/sdktool/addvalueoperation.h
+++ b/src/tools/sdktool/addvalueoperation.h
@@ -49,7 +49,7 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
private:
diff --git a/src/tools/sdktool/findkeyoperation.cpp b/src/tools/sdktool/findkeyoperation.cpp
index 58d3b31ed24..806e4e164b2 100644
--- a/src/tools/sdktool/findkeyoperation.cpp
+++ b/src/tools/sdktool/findkeyoperation.cpp
@@ -27,6 +27,15 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(findkeylog, "qtc.sdktool.operations.findkey", QtWarningMsg)
+
+
QString FindKeyOperation::name() const
{
return QLatin1String("findKey");
@@ -57,9 +66,9 @@ bool FindKeyOperation::setArguments(const QStringList &args)
}
if (m_file.isEmpty())
- std::cerr << "No file given." << std::endl << std::endl;
+ qCCritical(findkeylog) << "No file given.";
if (m_keys.isEmpty())
- std::cerr << "No keys given." << std::endl << std::endl;
+ qCCritical(findkeylog) << "No keys given.";
return (!m_file.isEmpty() && !m_keys.isEmpty());
}
@@ -69,17 +78,18 @@ int FindKeyOperation::execute() const
Q_ASSERT(!m_keys.isEmpty());
QVariantMap map = load(m_file);
- foreach (const QString &k, m_keys) {
+ for (const auto &k : m_keys) {
const QStringList result = findKey(map, k);
- foreach (const QString &r, result)
+ for (const auto &r: result) {
std::cout << qPrintable(r) << std::endl;
+ }
}
return 0;
}
#ifdef WITH_TESTS
-bool FindKeyOperation::test() const
+void FindKeyOperation::unittest()
{
QVariantMap testMap;
QVariantMap subKeys;
@@ -108,26 +118,20 @@ bool FindKeyOperation::test() const
QStringList result;
result = findKey(testMap, QLatin1String("missing"));
- if (!result.isEmpty())
- return false;
+ QVERIFY(result.isEmpty());
result = findKey(testMap, QLatin1String("testint"));
- if (result.count() != 2
- || !result.contains(QLatin1String("testint"))
- || !result.contains(QLatin1String("subkeys/subsubkeys/testint")))
- return false;
+ QCOMPARE(result.count(), 2);
+ QVERIFY(result.contains(QLatin1String("testint")));
+ QVERIFY(result.contains(QLatin1String("subkeys/subsubkeys/testint")));
result = findKey(testMap, QLatin1String("testbool"));
- if (result.count() != 2
- || !result.contains(QLatin1String("testbool")))
- return false;
+ QCOMPARE(result.count(), 2);
+ QVERIFY(result.contains(QLatin1String("testbool")));
result = findKey(testMap, QLatin1String("findMe"));
- if (result.count() != 1
- || !result.contains(QLatin1String("aList[2][1]/findMe")))
- return false;
-
- return true;
+ QCOMPARE(result.count(), 1);
+ QVERIFY(result.contains(QLatin1String("aList[2][1]/findMe")));
}
#endif
diff --git a/src/tools/sdktool/findkeyoperation.h b/src/tools/sdktool/findkeyoperation.h
index e8138fa7865..1d9e4fba8b5 100644
--- a/src/tools/sdktool/findkeyoperation.h
+++ b/src/tools/sdktool/findkeyoperation.h
@@ -39,11 +39,11 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
+
static QStringList findKey(const QVariant &in, const QString &key,
const QString &prefix = QString());
-
private:
QString m_file;
QStringList m_keys;
diff --git a/src/tools/sdktool/findvalueoperation.cpp b/src/tools/sdktool/findvalueoperation.cpp
index 2ed856c608b..913fc27a42c 100644
--- a/src/tools/sdktool/findvalueoperation.cpp
+++ b/src/tools/sdktool/findvalueoperation.cpp
@@ -27,6 +27,14 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(findvaluelog, "qtc.sdktool.operations.findvalue", QtWarningMsg)
+
QString FindValueOperation::name() const
{
return QLatin1String("find");
@@ -55,16 +63,16 @@ bool FindValueOperation::setArguments(const QStringList &args)
QVariant v = valueFromString(current);
if (!v.isValid()) {
- std::cerr << "Value for key '" << qPrintable(current) << "' is not valid." << std::endl << std::endl;
+ qCCritical(findvaluelog) << "Value for key '" << qPrintable(current) << "' is not valid.";
return false;
}
m_values << v;
}
if (m_file.isEmpty())
- std::cerr << "No file given." << std::endl << std::endl;
+ qCCritical(findvaluelog) << "No file given.";
if (m_values.isEmpty())
- std::cerr << "No values given." << std::endl << std::endl;
+ qCCritical(findvaluelog) << "No values given.";
return (!m_file.isEmpty() && !m_values.isEmpty());
}
@@ -84,7 +92,7 @@ int FindValueOperation::execute() const
}
#ifdef WITH_TESTS
-bool FindValueOperation::test() const
+void FindValueOperation::unittest()
{
QVariantMap testMap;
QVariantMap subKeys;
@@ -114,26 +122,21 @@ bool FindValueOperation::test() const
QStringList result;
result = findValue(testMap, QVariant(23));
- if (result.count() != 1
- || !result.contains(QLatin1String("testint")))
- return false;
+ QCOMPARE(result.count(), 1);
+ QVERIFY(result.contains(QLatin1String("testint")));
result = findValue(testMap, QVariant(53));
- if (result.count() != 2
- || !result.contains(QLatin1String("subkeys/subsubkeys/testint2"))
- || !result.contains(QLatin1String("subkeys/otherint")))
- return false;
+ QCOMPARE(result.count(), 2);
+
+ QVERIFY(result.contains(QLatin1String("subkeys/subsubkeys/testint2")));
+ QVERIFY(result.contains(QLatin1String("subkeys/otherint")));
result = findValue(testMap, QVariant(23456));
- if (!result.isEmpty())
- return false;
+ QVERIFY(result.isEmpty());
result = findValue(testMap, QVariant(QString::fromLatin1("FindInList")));
- if (result.count() != 1
- || !result.contains(QLatin1String("aList[2][1]/findMe")))
- return false;
-
- return true;
+ QCOMPARE(result.count(), 1);
+ QVERIFY(result.contains(QLatin1String("aList[2][1]/findMe")));
}
#endif
diff --git a/src/tools/sdktool/findvalueoperation.h b/src/tools/sdktool/findvalueoperation.h
index f53dae125b0..f441a3ab820 100644
--- a/src/tools/sdktool/findvalueoperation.h
+++ b/src/tools/sdktool/findvalueoperation.h
@@ -39,7 +39,7 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
static QStringList findValue(const QVariant &in, const QVariant &value,
diff --git a/src/tools/sdktool/getoperation.cpp b/src/tools/sdktool/getoperation.cpp
index fb15d42142e..335d34529d9 100644
--- a/src/tools/sdktool/getoperation.cpp
+++ b/src/tools/sdktool/getoperation.cpp
@@ -27,6 +27,14 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(getlog, "qtc.sdktool.operations.get", QtWarningMsg)
+
QString GetOperation::name() const
{
return QLatin1String("get");
@@ -52,9 +60,9 @@ bool GetOperation::setArguments(const QStringList &args)
m_file = m_keys.takeFirst();
if (m_file.isEmpty())
- std::cerr << "No file given." << std::endl << std::endl;
+ qCCritical(getlog) << "No file given.";
if (m_keys.isEmpty())
- std::cerr << "No keys given." << std::endl << std::endl;
+ qCCritical(getlog) << "No keys given.";
return !m_file.isEmpty() && !m_keys.isEmpty();
}
@@ -112,7 +120,7 @@ int GetOperation::execute() const
}
#ifdef WITH_TESTS
-bool GetOperation::test() const
+void GetOperation::unittest()
{
QVariantMap testMap;
QVariantMap subKeys;
@@ -127,22 +135,16 @@ bool GetOperation::test() const
QVariant result;
result = get(testMap, QLatin1String("testint"));
- if (result.toString() != QLatin1String("23"))
- return false;
+ QCOMPARE(result.toString(), QLatin1String("23"));
result = get(testMap, QLatin1String("subkeys/testbool"));
- if (result.toString() != QLatin1String("true"))
- return false;
+ QCOMPARE(result.toString(), QLatin1String("true"));
result = get(testMap, QLatin1String("subkeys/subsubkeys"));
- if (result.type() != QVariant::Map)
- return false;
+ QCOMPARE(result.type(), QVariant::Map);
result = get(testMap, QLatin1String("nonexistant"));
- if (result.isValid())
- return false;
-
- return true;
+ QVERIFY(!result.isValid());
}
#endif
diff --git a/src/tools/sdktool/getoperation.h b/src/tools/sdktool/getoperation.h
index 56b7970ca35..3aab4ceb86f 100644
--- a/src/tools/sdktool/getoperation.h
+++ b/src/tools/sdktool/getoperation.h
@@ -39,11 +39,10 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
static QVariant get(const QVariantMap &map, const QString &key);
-
private:
QStringList m_keys;
QString m_file;
diff --git a/src/tools/sdktool/main.cpp b/src/tools/sdktool/main.cpp
index 1997604270d..7dbb9ff9277 100644
--- a/src/tools/sdktool/main.cpp
+++ b/src/tools/sdktool/main.cpp
@@ -214,21 +214,6 @@ int main(int argc, char *argv[])
operations.emplace_back(std::make_unique<FindKeyOperation>());
operations.emplace_back(std::make_unique<FindValueOperation>());
-#ifdef WITH_TESTS
- if (argc == 2 && !strcmp(argv[1], "-test")) {
- std::cerr << std::endl << std::endl << "Starting tests..." << std::endl;
- int res = 0;
- for (const std::unique_ptr<Operation> &o : operations) {
- if (!o->test()) {
- std::cerr << "!!!! Test failed for: " << qPrintable(o->name()) << " !!!!" << std::endl;
- ++res;
- }
- }
- std::cerr << "Tests done." << std::endl << std::endl;
- return res;
- }
-#endif
-
int result = parseArguments(a.arguments(), &settings, operations);
return settings.operation ? settings.operation->execute() : result;
}
diff --git a/src/tools/sdktool/operation.h b/src/tools/sdktool/operation.h
index cc489ce0757..9fba8ef1d3a 100644
--- a/src/tools/sdktool/operation.h
+++ b/src/tools/sdktool/operation.h
@@ -59,10 +59,6 @@ public:
virtual int execute() const = 0;
-#ifdef WITH_TESTS
- virtual bool test() const = 0;
-#endif
-
static QVariantMap load(const QString &file);
bool save(const QVariantMap &map, const QString &file) const;
};
diff --git a/src/tools/sdktool/rmcmakeoperation.cpp b/src/tools/sdktool/rmcmakeoperation.cpp
index 423abdbc695..570e19703cc 100644
--- a/src/tools/sdktool/rmcmakeoperation.cpp
+++ b/src/tools/sdktool/rmcmakeoperation.cpp
@@ -25,8 +25,8 @@
#include "rmcmakeoperation.h"
-#include "addkeysoperation.h"
#include "addcmakeoperation.h"
+#include "addkeysoperation.h"
#include "findkeyoperation.h"
#include "findvalueoperation.h"
#include "getoperation.h"
@@ -34,6 +34,14 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(rmcmakelog, "qtc.sdktool.operations.rmcmake", QtWarningMsg)
+
// CMake file stuff:
const char COUNT[] = "CMakeTools.Count";
const char PREFIX[] = "CMakeTools.";
@@ -64,7 +72,7 @@ bool RmCMakeOperation::setArguments(const QStringList &args)
if (current == "--id") {
if (next.isNull()) {
- std::cerr << "No parameter for --id given." << std::endl << std::endl;
+ qCCritical(rmcmakelog) << "No parameter for --id given.";
return false;
}
++i; // skip next;
@@ -73,8 +81,9 @@ bool RmCMakeOperation::setArguments(const QStringList &args)
}
}
- if (m_id.isEmpty())
- std::cerr << "No id given." << std::endl << std::endl;
+ if (m_id.isEmpty()) {
+ qCCritical(rmcmakelog) << "No id given.";
+ }
return !m_id.isEmpty();
}
@@ -93,45 +102,55 @@ int RmCMakeOperation::execute() const
}
#ifdef WITH_TESTS
-bool RmCMakeOperation::test() const
+void RmCMakeOperation::unittest()
{
// Add cmakes:
QVariantMap map = AddCMakeOperation::initializeCMake();
const QVariantMap emptyMap = map;
- map = AddCMakeData{"testId", "name", "/tmp/test",
- {{"ExtraKey", QVariant("ExtraValue")}}}.addCMake(map);
- map = AddCMakeData{"testId2", "other name", "/tmp/test2", {}}.addCMake(map);
+ AddCMakeData d;
+ d.m_id = "testId";
+ d.m_displayName = "name";
+ d.m_path = "/tmp/test";
+ d.m_extra = {{"ExtraKey", QVariant("ExtraValue")}};
+ map = d.addCMake(map);
+
+ d.m_id = "testId2";
+ d.m_displayName = "other name";
+ d.m_path = "/tmp/test2";
+ d.m_extra = {};
+ map = d.addCMake(map);
+
+ RmCMakeData rmD;
+ rmD.m_id = "nonexistent";
- QVariantMap result = RmCMakeData{"nonexistent"}.rmCMake(QVariantMap());
- if (!result.isEmpty())
- return false;
+ QTest::ignoreMessage(QtCriticalMsg, "Error: Count found in cmake tools file seems wrong.");
- result = RmCMakeData{"nonexistent"}.rmCMake(map);
- if (result != map)
- return false;
+ QVERIFY(rmD.rmCMake(QVariantMap()).isEmpty());
+ QCOMPARE(rmD.rmCMake(map), map);
// Remove from map with both testId and testId2:
- result = RmCMakeData{"testId2"}.rmCMake(map);
- if (result == map
- || result.value(COUNT, 0).toInt() != 1
- || !result.contains(QString::fromLatin1(PREFIX) + "0")
- || result.value(QString::fromLatin1(PREFIX) + "0") != map.value(QString::fromLatin1(PREFIX) + "0"))
- return false;
+ rmD.m_id = "testId2";
+ QVariantMap result = rmD.rmCMake(map);
+ QVERIFY(result != map);
+
+ QCOMPARE(result.value(COUNT, 0).toInt(), 1);
+ QVERIFY(result.contains(QString::fromLatin1(PREFIX) + "0"));
+ QCOMPARE(result.value(QString::fromLatin1(PREFIX) + "0"),
+ map.value(QString::fromLatin1(PREFIX) + "0"));
// Remove from map with both testId and testId2:
- result = RmCMakeData{"testId"}.rmCMake(map);
- if (result == map
- || result.value(COUNT, 0).toInt() != 1
- || !result.contains(QString::fromLatin1(PREFIX) + "0")
- || result.value(QString::fromLatin1(PREFIX) + "0") != map.value(QString::fromLatin1(PREFIX) + "1"))
- return false;
+ rmD.m_id = "testId";
+ result = rmD.rmCMake(map);
+ QVERIFY(result != map);
+ QCOMPARE(result.value(COUNT, 0).toInt(), 1);
+ QVERIFY(result.contains(QString::fromLatin1(PREFIX) + "0"));
+ QCOMPARE(result.value(QString::fromLatin1(PREFIX) + "0"),
+ map.value(QString::fromLatin1(PREFIX) + "1"));
// Remove from map without testId!
- result = RmCMakeData{"testId2"}.rmCMake(result);
- if (result != emptyMap)
- return false;
-
- return true;
+ rmD.m_id = "testId2";
+ result = rmD.rmCMake(result);
+ QCOMPARE(result, emptyMap);
}
#endif
@@ -141,13 +160,14 @@ QVariantMap RmCMakeData::rmCMake(const QVariantMap &map) const
bool ok;
int count = GetOperation::get(map, COUNT).toInt(&ok);
if (!ok || count < 0) {
- std::cerr << "Error: Count found in cmake tools file seems wrong." << std::endl;
+ qCCritical(rmcmakelog) << "Error: Count found in cmake tools file seems wrong.";
return map;
}
QVariantList cmList;
for (int i = 0; i < count; ++i) {
- QVariantMap cmData = GetOperation::get(map, QString::fromLatin1(PREFIX) + QString::number(i)).toMap();
+ QVariantMap cmData
+ = GetOperation::get(map, QString::fromLatin1(PREFIX) + QString::number(i)).toMap();
if (cmData.value(ID).toString() != m_id)
cmList.append(cmData);
}
@@ -159,4 +179,3 @@ QVariantMap RmCMakeData::rmCMake(const QVariantMap &map) const
return newMap;
}
-
diff --git a/src/tools/sdktool/rmcmakeoperation.h b/src/tools/sdktool/rmcmakeoperation.h
index 98d9f7847a0..e77d8efecb6 100644
--- a/src/tools/sdktool/rmcmakeoperation.h
+++ b/src/tools/sdktool/rmcmakeoperation.h
@@ -47,6 +47,6 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
#endif
};
diff --git a/src/tools/sdktool/rmdebuggeroperation.cpp b/src/tools/sdktool/rmdebuggeroperation.cpp
index 5ed3ec6a86e..bdefbecb26e 100644
--- a/src/tools/sdktool/rmdebuggeroperation.cpp
+++ b/src/tools/sdktool/rmdebuggeroperation.cpp
@@ -36,6 +36,14 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(rmdebuggerlog, "qtc.sdktool.operations.rmdebugger", QtWarningMsg)
+
// Qt version file stuff:
const char PREFIX[] = "DebuggerItem.";
const char COUNT[] = "DebuggerItem.Count";
@@ -58,7 +66,8 @@ QString RmDebuggerOperation::helpText() const
QString RmDebuggerOperation::argumentsHelpText() const
{
- return QLatin1String(" --id <ID> id of the debugger to remove.\n");
+ return QLatin1String(
+ " --id <ID> id of the debugger to remove.\n");
}
bool RmDebuggerOperation::setArguments(const QStringList &args)
@@ -70,8 +79,9 @@ bool RmDebuggerOperation::setArguments(const QStringList &args)
m_id = args.at(1);
- if (m_id.isEmpty())
- std::cerr << "No id given." << std::endl << std::endl;
+ if (m_id.isEmpty()) {
+ qCCritical(rmdebuggerlog) << "No id given.";
+ }
return !m_id.isEmpty();
}
@@ -91,51 +101,50 @@ int RmDebuggerOperation::execute() const
}
#ifdef WITH_TESTS
-bool RmDebuggerOperation::test() const
+void RmDebuggerOperation::unittest()
{
-
- QVariantMap map =
- AddDebuggerData{QLatin1String("id1"), QLatin1String("Name1"),
- 2, QLatin1String("/tmp/debugger1"),
- {"test11", "test12"}, {}}
- .addDebugger(AddDebuggerOperation::initializeDebuggers());
-
- map = AddDebuggerData{QLatin1String("id2"), QLatin1String("Name2"),
- 2, QLatin1String("/tmp/debugger2"),
- {"test21", "test22"}, {}}
- .addDebugger(map);
+ AddDebuggerData d;
+ d.m_id = "id1";
+ d.m_displayName = "Name1";
+ d.m_engine = 2;
+ d.m_binary = "/tmp/debugger1";
+ d.m_abis = {"test11", "test12"};
+
+ QVariantMap map = d.addDebugger(AddDebuggerOperation::initializeDebuggers());
+ d.m_id = "id2";
+ d.m_displayName = "Name2";
+ d.m_binary = "/tmp/debugger2";
+ d.m_abis = {"test21", "test22"};
+ map = d.addDebugger(map);
QVariantMap result = rmDebugger(map, QLatin1String("id2"));
- if (result.count() != 3
- || !result.contains(QLatin1String("DebuggerItem.0"))
- || !result.contains(QLatin1String(COUNT))
- || result.value(QLatin1String(COUNT)).toInt() != 1
- || !result.contains(QLatin1String(VERSION))
- || result.value(QLatin1String(VERSION)).toInt() != 1)
- return false;
+ QCOMPARE(result.count(), 3);
+ QVERIFY(result.contains(QLatin1String("DebuggerItem.0")));
+ QVERIFY(result.contains(QLatin1String(COUNT)));
+ QCOMPARE(result.value(QLatin1String(COUNT)).toInt(), 1);
+ QVERIFY(result.contains(QLatin1String(VERSION)));
+ QCOMPARE(result.value(QLatin1String(VERSION)).toInt(), 1);
+
+ QTest::ignoreMessage(QtCriticalMsg,
+ QRegularExpression("Error: Id was not found"));
result = rmDebugger(map, QLatin1String("unknown"));
- if (result != map)
- return false;
+ QVERIFY(result == map);
result = rmDebugger(map, QLatin1String("id2"));
- if (result.count() != 3
- || !result.contains(QLatin1String("DebuggerItem.0"))
- || !result.contains(QLatin1String(COUNT))
- || result.value(QLatin1String(COUNT)).toInt() != 1
- || !result.contains(QLatin1String(VERSION))
- || result.value(QLatin1String(VERSION)).toInt() != 1)
- return false;
+ QCOMPARE(result.count(), 3);
+ QVERIFY(result.contains(QLatin1String("DebuggerItem.0")));
+ QVERIFY(result.contains(QLatin1String(COUNT)));
+ QCOMPARE(result.value(QLatin1String(COUNT)).toInt(), 1);
+ QVERIFY(result.contains(QLatin1String(VERSION)));
+ QCOMPARE(result.value(QLatin1String(VERSION)).toInt(), 1);
result = rmDebugger(result, QLatin1String("id1"));
- if (result.count() != 2
- || !result.contains(QLatin1String(COUNT))
- || result.value(QLatin1String(COUNT)).toInt() != 0
- || !result.contains(QLatin1String(VERSION))
- || result.value(QLatin1String(VERSION)).toInt() != 1)
- return false;
-
- return true;
+ QCOMPARE(result.count(), 2);
+ QVERIFY(result.contains(QLatin1String(COUNT)));
+ QCOMPARE(result.value(QLatin1String(COUNT)).toInt(), 0);
+ QVERIFY(result.contains(QLatin1String(VERSION)));
+ QCOMPARE(result.value(QLatin1String(VERSION)).toInt(), 1);
}
#endif
@@ -147,7 +156,7 @@ QVariantMap RmDebuggerOperation::rmDebugger(const QVariantMap &map, const QStrin
bool ok;
int count = GetOperation::get(map, QLatin1String(COUNT)).toInt(&ok);
if (!ok) {
- std::cerr << "Error: The count found in map is not an integer." << std::endl;
+ qCCritical(rmdebuggerlog) << "Error: The count found in map is not an integer.";
return map;
}
@@ -159,7 +168,7 @@ QVariantMap RmDebuggerOperation::rmDebugger(const QVariantMap &map, const QStrin
debuggerList << debugger;
}
if (debuggerList.count() == map.count() - 2) {
- std::cerr << "Error: Id was not found." << std::endl;
+ qCCritical(rmdebuggerlog) << "Error: Id was not found.";
return map;
}
@@ -179,4 +188,3 @@ QVariantMap RmDebuggerOperation::rmDebugger(const QVariantMap &map, const QStrin
return AddKeysData{data}.addKeys(result);
}
-
diff --git a/src/tools/sdktool/rmdebuggeroperation.h b/src/tools/sdktool/rmdebuggeroperation.h
index 58c086849b2..c5535ace26f 100644
--- a/src/tools/sdktool/rmdebuggeroperation.h
+++ b/src/tools/sdktool/rmdebuggeroperation.h
@@ -41,11 +41,10 @@ public:
int execute() const;
#ifdef WITH_TESTS
- bool test() const;
+ static void unittest();
#endif
static QVariantMap rmDebugger(const QVariantMap &map, const QString &id);
-
private:
QString m_id;
};
diff --git a/src/tools/sdktool/rmdeviceoperation.cpp b/src/tools/sdktool/rmdeviceoperation.cpp
index 4558352ab33..4adb196e72e 100644
--- a/src/tools/sdktool/rmdeviceoperation.cpp
+++ b/src/tools/sdktool/rmdeviceoperation.cpp
@@ -32,6 +32,15 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(rmdevicelog, "qtc.sdktool.operations.rmdevice", QtWarningMsg)
+
+
QString RmDeviceOperation::name() const
{
return QLatin1String("rmDev");
@@ -57,7 +66,7 @@ bool RmDeviceOperation::setArguments(const QStringList &args)
m_id = args.at(1);
if (m_id.isEmpty())
- std::cerr << "No id given." << std::endl << std::endl;
+ qCCritical(rmdevicelog) << "No id given.";
return !m_id.isEmpty();
}
@@ -77,9 +86,9 @@ int RmDeviceOperation::execute() const
}
#ifdef WITH_TESTS
-bool RmDeviceOperation::test() const
+void RmDeviceOperation::unittest()
{
- return true;
+
}
#endif
@@ -107,8 +116,10 @@ QVariantMap RmDeviceOperation::rmDevice(const QVariantMap &map, const QString &i
dmMap.insert(QLatin1String(DEVICE_LIST_ID), devList);
result.insert(QLatin1String(DEVICEMANAGER_ID), dmMap);
- if (!found)
- std::cerr << "Device " << qPrintable(id) << " not found." << std::endl;
+ if (!found){
+ qCCritical(rmdevicelog) << "Device " << qPrintable(id) << " not found.";
+
+ }
return result;
}
diff --git a/src/tools/sdktool/rmdeviceoperation.h b/src/tools/sdktool/rmdeviceoperation.h
index f5f711b5f57..d9fe64845e4 100644
--- a/src/tools/sdktool/rmdeviceoperation.h
+++ b/src/tools/sdktool/rmdeviceoperation.h
@@ -41,7 +41,7 @@ public:
int execute() const;
#ifdef WITH_TESTS
- bool test() const;
+ static void unittest();
#endif
static QVariantMap rmDevice(const QVariantMap &map, const QString &id);
diff --git a/src/tools/sdktool/rmkeysoperation.cpp b/src/tools/sdktool/rmkeysoperation.cpp
index 6f3d190d5e2..9d05bfeee01 100644
--- a/src/tools/sdktool/rmkeysoperation.cpp
+++ b/src/tools/sdktool/rmkeysoperation.cpp
@@ -27,6 +27,14 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(rmkeyslog, "qtc.sdktool.operations.rmkeys", QtWarningMsg)
+
QString RmKeysOperation::name() const
{
return QLatin1String("rmKeys");
@@ -52,9 +60,9 @@ bool RmKeysOperation::setArguments(const QStringList &args)
m_file = m_keys.takeFirst();
if (m_file.isEmpty())
- std::cerr << "No file given." << std::endl << std::endl;
+ qCCritical(rmkeyslog) << "No file given.";
if (m_keys.isEmpty())
- std::cerr << "No keys given." << std::endl << std::endl;
+ qCCritical(rmkeyslog) << "No keys given.";
return !m_file.isEmpty() && !m_keys.isEmpty();
}
@@ -73,7 +81,7 @@ int RmKeysOperation::execute() const
}
#ifdef WITH_TESTS
-bool RmKeysOperation::test() const
+void RmKeysOperation::unittest()
{
QVariantMap testMap;
QVariantMap subKeys;
@@ -90,77 +98,72 @@ bool RmKeysOperation::test() const
QVariantMap result = rmKeys(testMap, data);
- if (result != testMap)
- return false;
+ QVERIFY(result == testMap);
data.append(QLatin1String("testint"));
result = rmKeys(testMap, data);
- if (result.count() != 2
- || !result.contains(QLatin1String("subkeys"))
- || !result.contains(QLatin1String("subkeys2")))
- return false;
+ QCOMPARE(result.count(), 2);
+ QVERIFY(result.contains(QLatin1String("subkeys")));
+ QVERIFY(result.contains(QLatin1String("subkeys2")));
+
cur = result.value(QLatin1String("subkeys")).toMap();
- if (cur.count() != 2
- || !cur.contains(QLatin1String("subsubkeys"))
- || !cur.contains(QLatin1String("testbool")))
- return false;
+ QCOMPARE(cur.count(), 2);
+ QVERIFY(cur.contains(QLatin1String("subsubkeys")));
+ QVERIFY(cur.contains(QLatin1String("testbool")));
cur = cur.value(QLatin1String("subsubkeys")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("testint2")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("testint2")));
cur = result.value(QLatin1String("subkeys2")).toMap();
- if (cur.count() != 0)
- return false;
+ QVERIFY(cur.isEmpty());
data.clear();
data.append(QLatin1String("subkeys/subsubkeys"));
result = rmKeys(testMap, data);
- if (result.count() != 3
- || !result.contains(QLatin1String("subkeys"))
- || !result.contains(QLatin1String("subkeys2"))
- || !result.contains(QLatin1String("testint")))
- return false;
+ QCOMPARE(result.count(), 3);
+ QVERIFY(result.contains(QLatin1String("subkeys")));
+ QVERIFY(result.contains(QLatin1String("subkeys2")));
+ QVERIFY(result.contains(QLatin1String("testint")));
+
cur = result.value(QLatin1String("subkeys")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("testbool")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("testbool")));
cur = result.value(QLatin1String("subkeys2")).toMap();
- if (cur.count() != 0)
- return false;
+ QVERIFY(cur.isEmpty());
data.clear();
data.append(QLatin1String("subkeys/testbool"));
result = rmKeys(testMap, data);
- if (result.count() != 3
- || !result.contains(QLatin1String("subkeys"))
- || !result.contains(QLatin1String("subkeys2"))
- || !result.contains(QLatin1String("testint")))
- return false;
+ QCOMPARE(result.count(), 3);
+ QVERIFY(result.contains(QLatin1String("subkeys")));
+ QVERIFY(result.contains(QLatin1String("subkeys2")));
+ QVERIFY(result.contains(QLatin1String("testint")));
+
cur = result.value(QLatin1String("subkeys")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("subsubkeys")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("subsubkeys")));
cur = cur.value(QLatin1String("subsubkeys")).toMap();
- if (cur.count() != 1
- || !cur.contains(QLatin1String("testint2")))
- return false;
+ QCOMPARE(cur.count(), 1);
+ QVERIFY(cur.contains(QLatin1String("testint2")));
cur = result.value(QLatin1String("subkeys2")).toMap();
- if (cur.count() != 0)
- return false;
+ QVERIFY(cur.isEmpty());
cur = result.value(QLatin1String("subkeys2")).toMap();
- if (cur.count() != 0)
- return false;
+ QVERIFY(cur.isEmpty());
+
+ // Test removing of non-existent key ...
+ testMap = rmKeys(testMap, data);
- return true;
+ QTest::ignoreMessage(QtWarningMsg,
+ QRegularExpression("Key .* not found."));
+ testMap = rmKeys(testMap, data);
}
#endif
@@ -180,7 +183,7 @@ QVariantMap RmKeysOperation::rmKeys(const QVariantMap &map, const QStringList &r
if (stack.last().contains(keys.at(i))) {
subMap = stack.last().value(keys.at(i)).toMap();
} else {
- std::cerr << "Warning: Key " << qPrintable(r) << " not found." << std::endl;
+ qCWarning(rmkeyslog) << "Key" << qPrintable(r) << "not found.";
continue;
}
stack.append(subMap);
@@ -189,7 +192,7 @@ QVariantMap RmKeysOperation::rmKeys(const QVariantMap &map, const QStringList &r
// remove
Q_ASSERT(stack.count() == keys.count());
if (!stack.last().contains(keys.last())) {
- std::cerr << "Warning: Key " << qPrintable(r) << " not found." << std::endl;
+ qCWarning(rmkeyslog) << "Key" << qPrintable(r) << "not found.";
continue;
}
stack.last().remove(keys.last());
diff --git a/src/tools/sdktool/rmkeysoperation.h b/src/tools/sdktool/rmkeysoperation.h
index d83c1860d5b..b9e016a2333 100644
--- a/src/tools/sdktool/rmkeysoperation.h
+++ b/src/tools/sdktool/rmkeysoperation.h
@@ -39,7 +39,7 @@ public:
int execute() const;
#ifdef WITH_TESTS
- bool test() const;
+ static void unittest();
#endif
static QVariantMap rmKeys(const QVariantMap &map, const QStringList &removals);
diff --git a/src/tools/sdktool/rmkitoperation.cpp b/src/tools/sdktool/rmkitoperation.cpp
index 8d042990326..ece4863daff 100644
--- a/src/tools/sdktool/rmkitoperation.cpp
+++ b/src/tools/sdktool/rmkitoperation.cpp
@@ -25,11 +25,11 @@
#include "rmkitoperation.h"
-#include "addkeysoperation.h"
-#include "addtoolchainoperation.h"
#include "adddeviceoperation.h"
-#include "addqtoperation.h"
+#include "addkeysoperation.h"
#include "addkitoperation.h"
+#include "addqtoperation.h"
+#include "addtoolchainoperation.h"
#include "findkeyoperation.h"
#include "findvalueoperation.h"
#include "getoperation.h"
@@ -39,6 +39,14 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(rmkitlog, "qtc.sdktool.operations.rmkit", QtWarningMsg)
+
// Qt version file stuff:
const char PREFIX[] = "Profile.";
const char COUNT[] = "Profile.Count";
@@ -75,7 +83,7 @@ bool RmKitOperation::setArguments(const QStringList &args)
m_id = args.at(1);
if (m_id.isEmpty())
- std::cerr << "No id given." << std::endl << std::endl;
+ qCCritical(rmkitlog) << "No id given.";
return !m_id.isEmpty();
}
@@ -95,15 +103,28 @@ int RmKitOperation::execute() const
}
#ifdef WITH_TESTS
-bool RmKitOperation::test() const
+void RmKitOperation::unittest()
{
QVariantMap tcMap = AddToolChainOperation::initializeToolChains();
- tcMap = AddToolChainData{"{tc-id}", "langId", "TC", "/usr/bin/gcc",
- "x86-linux-generic-elf-32bit", "x86-linux-generic-elf-32bit", {}}
- .addToolChain(tcMap);
+ AddToolChainData d;
+ d.m_id = "{tc-id}";
+ d.m_languageId = "langId";
+ d.m_displayName = "TC";
+ d.m_path = "/usr/bin/gcc";
+ d.m_targetAbi = "x86-linux-generic-elf-32bit";
+ d.m_supportedAbis = "x86-linux-generic-elf-32bit";
+ d.m_extra = {};
+
+ tcMap = d.addToolChain(tcMap);
QVariantMap qtMap = AddQtData::initializeQtVersions();
- qtMap = AddQtData{"{qt-id}", "Qt", "desktop-qt", "/usr/bin/qmake", {}, {}}.addQt(qtMap);
+ AddQtData qtd;
+ qtd.m_id = "{qt-id}";
+ qtd.m_displayName = "Qt";
+ qtd.m_type = "desktop-qt";
+ qtd.m_qmake = "/usr/bin/qmake";
+
+ qtMap = qtd.addQt(qtMap);
QVariantMap devMap = AddDeviceOperation::initializeDevices();
AddDeviceData devData;
@@ -134,52 +155,57 @@ bool RmKitOperation::test() const
kitData.m_displayName = "Test Qt Version";
kitData.m_icon = "/tmp/icon.png";
kitData.m_debuggerEngine = 1;
- kitData.m_debugger = "/usr/bin/gdb-test";
+ kitData.m_debugger = "/usr/bin/gdb-test";
kitData.m_deviceType = "Desktop";
kitData.m_tcs = tcs;
kitData.m_qt = "{qt-id}";
kitData.m_mkspec = "unsupported/mkspec";
- kitData.m_extra = {{"PE.Profile.Data/extraData", QVariant("extraValue")}};
+ kitData.m_extra = {{"PE.Profile.Data/extraData", QVariant("extraValue")}};
QVariantMap map = kitData.addKit(AddKitData::initializeKits(), tcMap, qtMap, devMap, {});
-
kitData.m_id = "testId2";
kitData.m_icon = "/tmp/icon2.png";
kitData.m_icon = "/usr/bin/gdb-test2";
kitData.m_mkspec = "unsupported/mkspec2";
- kitData.m_extra = {{"PE.Profile.Data/extraData", QVariant("extraValue2")}};
+ kitData.m_extra = {{"PE.Profile.Data/extraData", QVariant("extraValue2")}};
map = kitData.addKit(map, tcMap, qtMap, devMap, {});
+ QTest::ignoreMessage(QtCriticalMsg, "Error: Could not find the default kit.");
QVariantMap result = rmKit(map, "testId");
- if (result.count() != 4
- || !result.contains("Profile.0")
- || !result.contains(COUNT) || result.value(COUNT).toInt() != 1
- || !result.contains(DEFAULT) || result.value(DEFAULT).toInt() != 0
- || !result.contains(VERSION) || result.value(VERSION).toInt() != 1)
- return false;
-
+ QCOMPARE(result.count(), 4);
+ QVERIFY(result.contains("Profile.0"));
+ QVERIFY(result.contains(COUNT));
+ QCOMPARE(result.value(COUNT).toInt(), 1);
+ QVERIFY(result.contains(DEFAULT));
+ QCOMPARE(result.value(DEFAULT).toInt(), 0);
+ QVERIFY(result.contains(VERSION));
+ QCOMPARE(result.value(VERSION).toInt(), 1);
+
+ QTest::ignoreMessage(QtCriticalMsg, "Error: Id was not found.");
result = rmKit(map, "unknown");
- if (result != map)
- return false;
+ QCOMPARE(result, map);
+ QTest::ignoreMessage(QtCriticalMsg, "Error: Could not find the default kit.");
result = rmKit(map, "testId2");
- if (result.count() != 4
- || !result.contains("Profile.0")
- || !result.contains(COUNT) || result.value(COUNT).toInt() != 1
- || !result.contains(DEFAULT) || result.value(DEFAULT).toInt() != 0
- || !result.contains(VERSION) || result.value(VERSION).toInt() != 1)
- return false;
+ QCOMPARE(result.count(), 4);
+ QVERIFY(result.contains("Profile.0"));
+ QVERIFY(result.contains(COUNT));
+ QCOMPARE(result.value(COUNT).toInt(), 1);
+ QVERIFY(result.contains(DEFAULT));
+ QCOMPARE(result.value(DEFAULT).toInt(), 0);
+ QVERIFY(result.contains(VERSION));
+ QCOMPARE(result.value(VERSION).toInt(), 1);
result = rmKit(result, QLatin1String("testId"));
- if (result.count() != 3
- || !result.contains(COUNT) || result.value(COUNT).toInt() != 0
- || !result.contains(DEFAULT) || result.value(DEFAULT).toInt() != -1
- || !result.contains(VERSION) || result.value(VERSION).toInt() != 1)
- return false;
-
- return true;
+ QCOMPARE(result.count(), 3);
+ QVERIFY(result.contains(COUNT));
+ QCOMPARE(result.value(COUNT).toInt(), 0);
+ QVERIFY(result.contains(DEFAULT));
+ QCOMPARE(result.value(DEFAULT).toInt(), -1);
+ QVERIFY(result.contains(VERSION));
+ QCOMPARE(result.value(VERSION).toInt(), 1);
}
#endif
@@ -191,7 +217,7 @@ QVariantMap RmKitOperation::rmKit(const QVariantMap &map, const QString &id)
bool ok;
int count = GetOperation::get(map, COUNT).toInt(&ok);
if (!ok) {
- std::cerr << "Error: The count found in map is not an integer." << std::endl;
+ qCCritical(rmkitlog) << "Error: The count found in map is not an integer.";
return map;
}
@@ -206,13 +232,13 @@ QVariantMap RmKitOperation::rmKit(const QVariantMap &map, const QString &id)
profileList << profile;
}
if (profileList.count() == map.count() - 3) {
- std::cerr << "Error: Id was not found." << std::endl;
+ qCCritical(rmkitlog) << "Error: Id was not found.";
return map;
}
int defaultKit = GetOperation::get(map, DEFAULT).toInt(&ok);
if (!ok) {
- std::cerr << "Error: Could not find the default kit." << std::endl;
+ qCCritical(rmkitlog) << "Error: Could not find the default kit.";
defaultKit = -1;
}
@@ -228,8 +254,7 @@ QVariantMap RmKitOperation::rmKit(const QVariantMap &map, const QString &id)
data << KeyValuePair(COUNT, QVariant(count - 1));
for (int i = 0; i < profileList.count(); ++i)
- data << KeyValuePair(QString::fromLatin1(PREFIX) + QString::number(i),
- profileList.at(i));
+ data << KeyValuePair(QString::fromLatin1(PREFIX) + QString::number(i), profileList.at(i));
return AddKeysData{data}.addKeys(result);
}
diff --git a/src/tools/sdktool/rmkitoperation.h b/src/tools/sdktool/rmkitoperation.h
index 75fb4cf5277..a5360c9d380 100644
--- a/src/tools/sdktool/rmkitoperation.h
+++ b/src/tools/sdktool/rmkitoperation.h
@@ -41,7 +41,7 @@ public:
int execute() const;
#ifdef WITH_TESTS
- bool test() const;
+ static void unittest();
#endif
static QVariantMap rmKit(const QVariantMap &map, const QString &id);
diff --git a/src/tools/sdktool/rmqtoperation.cpp b/src/tools/sdktool/rmqtoperation.cpp
index bad6c923060..5c107204793 100644
--- a/src/tools/sdktool/rmqtoperation.cpp
+++ b/src/tools/sdktool/rmqtoperation.cpp
@@ -34,6 +34,14 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(rmqtlog, "qtc.sdktool.operations.rmqt", QtWarningMsg)
+
// ToolChain file stuff:
const char PREFIX[] = "QtVersion.";
@@ -63,7 +71,7 @@ bool RmQtOperation::setArguments(const QStringList &args)
if (current == QLatin1String("--id")) {
if (next.isNull()) {
- std::cerr << "No parameter for --id given." << std::endl << std::endl;
+ qCCritical(rmqtlog) << "No parameter for --id given.";
return false;
}
++i; // skip next;
@@ -73,7 +81,7 @@ bool RmQtOperation::setArguments(const QStringList &args)
}
if (m_id.isEmpty())
- std::cerr << "No id given." << std::endl << std::endl;
+ qCCritical(rmqtlog) << "No id given.";
return !m_id.isEmpty();
}
@@ -92,42 +100,46 @@ int RmQtOperation::execute() const
}
#ifdef WITH_TESTS
-bool RmQtOperation::test() const
+void RmQtOperation::unittest()
{
// Add toolchain:
QVariantMap map = AddQtData::initializeQtVersions();
QVariantMap result = rmQt(QVariantMap(), QLatin1String("nonexistant"));
- if (result != map)
- return false;
+ QCOMPARE(result, map);
- map = AddQtData{"testId", "name", "type", "/tmp/test", {},
- {{QLatin1String("ExtraKey"), QVariant(QLatin1String("ExtraValue"))}}}
- .addQt(map);
+ AddQtData addData;
+ addData.m_id = "testId";
+ addData.m_displayName = "name";
+ addData.m_type = "type";
+ addData.m_qmake = "/tmp/test";
+ addData.m_extra = {{QLatin1String("ExtraKey"), QVariant(QLatin1String("ExtraValue"))}};
- map = AddQtData{"testId2", "other name", "type", "/tmp/test2", {}, {}}.addQt(map);
+ map = addData.addQt(map);
+
+ addData.m_id = "testId2";
+ addData.m_displayName = "other name";
+ addData.m_type = "type";
+ addData.m_qmake = "/tmp/test2";
+ addData.m_extra = {};
+
+ map = addData.addQt(map);
result = rmQt(map, QLatin1String("nonexistant"));
- if (result != map)
- return false;
+ QCOMPARE(result, map);
result = rmQt(map, QLatin1String("testId2"));
- if (result == map
- || !result.contains(QLatin1String("QtVersion.0"))
- || result.value(QLatin1String("QtVersion.0")) != map.value(QLatin1String("QtVersion.0")))
- return false;
+ QVERIFY(result != map);
+ QVERIFY(result.contains(QLatin1String("QtVersion.0")));
+ QCOMPARE(result.value(QLatin1String("QtVersion.0")), map.value(QLatin1String("QtVersion.0")));
result = rmQt(map, QLatin1String("testId"));
- if (result == map
- || !result.contains(QLatin1String("QtVersion.0"))
- || result.value(QLatin1String("QtVersion.0")) != map.value(QLatin1String("QtVersion.1")))
- return false;
+ QVERIFY(result != map);
+ QVERIFY(result.contains(QLatin1String("QtVersion.0")));
+ QCOMPARE(result.value(QLatin1String("QtVersion.0")), map.value(QLatin1String("QtVersion.1")));
result = rmQt(result, QLatin1String("testId2"));
- if (result == map)
- return false;
-
- return true;
+ QVERIFY(result != map);
}
#endif
@@ -153,4 +165,3 @@ QVariantMap RmQtOperation::rmQt(const QVariantMap &map, const QString &id)
return newMap;
}
-
diff --git a/src/tools/sdktool/rmqtoperation.h b/src/tools/sdktool/rmqtoperation.h
index 36ff9cee96e..8779e493802 100644
--- a/src/tools/sdktool/rmqtoperation.h
+++ b/src/tools/sdktool/rmqtoperation.h
@@ -41,7 +41,7 @@ public:
int execute() const;
#ifdef WITH_TESTS
- bool test() const;
+ static void unittest();
#endif
static QVariantMap rmQt(const QVariantMap &map, const QString &id);
diff --git a/src/tools/sdktool/rmtoolchainoperation.cpp b/src/tools/sdktool/rmtoolchainoperation.cpp
index bf71ec5cfe9..e546eb6354c 100644
--- a/src/tools/sdktool/rmtoolchainoperation.cpp
+++ b/src/tools/sdktool/rmtoolchainoperation.cpp
@@ -34,6 +34,14 @@
#include <iostream>
+#ifdef WITH_TESTS
+#include <QTest>
+#endif
+
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(rmtoolchainlog, "qtc.sdktool.operations.rmtoolchain", QtWarningMsg)
+
// ToolChain file stuff:
const char COUNT[] = "ToolChain.Count";
const char PREFIX[] = "ToolChain.";
@@ -64,7 +72,7 @@ bool RmToolChainOperation::setArguments(const QStringList &args)
if (current == "--id") {
if (next.isNull()) {
- std::cerr << "No parameter for --id given." << std::endl << std::endl;
+ qCCritical(rmtoolchainlog) << "No parameter for --id given.";
return false;
}
++i; // skip next;
@@ -74,7 +82,7 @@ bool RmToolChainOperation::setArguments(const QStringList &args)
}
if (m_id.isEmpty())
- std::cerr << "No id given." << std::endl << std::endl;
+ qCCritical(rmtoolchainlog) << "No id given.";
return !m_id.isEmpty();
}
@@ -93,60 +101,72 @@ int RmToolChainOperation::execute() const
}
#ifdef WITH_TESTS
-bool RmToolChainOperation::test() const
+void RmToolChainOperation::unittest()
{
// Add toolchain:
QVariantMap map = AddToolChainOperation::initializeToolChains();
- map = AddToolChainData{"testId", "langId", "name", "/tmp/test", "test-abi",
- "test-abi,test-abi2", {{"ExtraKey", QVariant("ExtraValue")}}}
- .addToolChain(map);
-
- map = AddToolChainData{"testId2", "langId", "other name", "/tmp/test2", "test-abi",
- "test-abi,test-abi2", {}}
- .addToolChain(map);
+ 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);
+
+ d.m_id = "testId2";
+ d.m_languageId = "langId";
+ d.m_displayName = "other name";
+ d.m_path = "/tmp/test2";
+ d.m_targetAbi = "test-abi";
+ d.m_supportedAbis = "test-abi,test-abi2";
+ d.m_extra = {};
+ map = d.addToolChain(map);
+
+ QTest::ignoreMessage(QtCriticalMsg, "Error: Count found in toolchains file seems wrong.");
QVariantMap result = rmToolChain(QVariantMap(), "nonexistent");
- if (!result.isEmpty())
- return false;
+ QVERIFY(result.isEmpty());
result = rmToolChain(map, "nonexistent");
- if (result != map)
- return false;
+ QCOMPARE(result, map);
result = rmToolChain(map, "testId2");
- if (result == map
- || result.value(COUNT, 0).toInt() != 1
- || !result.contains("ToolChain.0") || result.value("ToolChain.0") != map.value("ToolChain.0"))
- return false;
+ QVERIFY(result != map);
+ QCOMPARE(result.value(COUNT, 0).toInt(), 1);
+ QVERIFY(result.contains("ToolChain.0"));
+ QCOMPARE(result.value("ToolChain.0"), map.value("ToolChain.0"));
result = rmToolChain(map, "testId");
- if (result == map
- || result.value(COUNT, 0).toInt() != 1
- || !result.contains("ToolChain.0") || result.value("ToolChain.0") != map.value("ToolChain.1"))
- return false;
+ QVERIFY(result != map);
+ QCOMPARE(result.value(COUNT, 0).toInt(), 1);
+ QVERIFY(result.contains("ToolChain.0"));
+ QCOMPARE(result.value("ToolChain.0"), map.value("ToolChain.1"));
result = rmToolChain(result, "testId2");
- if (result == map
- || result.value(COUNT, 0).toInt() != 0)
- return false;
+ QVERIFY(result != map);
- return true;
+ QCOMPARE(result.value(COUNT, 0).toInt(), 0);
}
#endif
QVariantMap RmToolChainOperation::rmToolChain(const QVariantMap &map, const QString &id)
{
+
// Find count of tool chains:
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(rmtoolchainlog) << "Error: Count found in toolchains file seems wrong.";
return map;
}
QVariantList tcList;
for (int i = 0; i < count; ++i) {
- QVariantMap tcData = GetOperation::get(map, QString::fromLatin1(PREFIX) + QString::number(i)).toMap();
+ QVariantMap tcData
+ = GetOperation::get(map, QString::fromLatin1(PREFIX) + QString::number(i)).toMap();
if (tcData.value(ID).toString() != id)
tcList.append(tcData);
}
@@ -158,4 +178,3 @@ QVariantMap RmToolChainOperation::rmToolChain(const QVariantMap &map, const QStr
return newMap;
}
-
diff --git a/src/tools/sdktool/rmtoolchainoperation.h b/src/tools/sdktool/rmtoolchainoperation.h
index cf4d12d1e5e..c2b7ddee6a6 100644
--- a/src/tools/sdktool/rmtoolchainoperation.h
+++ b/src/tools/sdktool/rmtoolchainoperation.h
@@ -41,7 +41,8 @@ public:
int execute() const final;
#ifdef WITH_TESTS
- bool test() const final;
+ static void unittest();
+
#endif
static QVariantMap rmToolChain(const QVariantMap &map, const QString &id);
diff --git a/src/tools/sdktool/sdktool.qbs b/src/tools/sdktool/sdktool.qbs
index ea997597c63..a1da4f5df3e 100644
--- a/src/tools/sdktool/sdktool.qbs
+++ b/src/tools/sdktool/sdktool.qbs
@@ -6,8 +6,7 @@ QtcTool {
Depends { name: "Qt.core" }
Depends { name: "app_version_header" }
Depends { name: "Qt.testlib"; condition: project.withAutotests }
-
- property string libsDir: path + "/../../libs"
+ Depends { name: "sdktoolLib" }
cpp.defines: base.concat([
"UTILS_LIBRARY",
@@ -24,73 +23,8 @@ QtcTool {
condition: qbs.targetOS.contains("macos")
cpp.frameworks: ["Foundation"]
}
- cpp.includePaths: base.concat([libsDir])
files: [
- "addabiflavor.cpp", "addabiflavor.h",
- "addcmakeoperation.cpp", "addcmakeoperation.h",
- "adddebuggeroperation.cpp", "adddebuggeroperation.h",
- "adddeviceoperation.cpp", "adddeviceoperation.h",
- "addkeysoperation.cpp",
- "addkeysoperation.h",
- "addkitoperation.cpp",
- "addkitoperation.h",
- "addqtoperation.cpp",
- "addqtoperation.h",
- "addtoolchainoperation.cpp",
- "addtoolchainoperation.h",
- "addvalueoperation.cpp",
- "addvalueoperation.h",
- "findkeyoperation.cpp",
- "findkeyoperation.h",
- "findvalueoperation.cpp",
- "findvalueoperation.h",
- "getoperation.cpp",
- "getoperation.h",
"main.cpp",
- "operation.cpp",
- "operation.h",
- "rmcmakeoperation.cpp", "rmcmakeoperation.h",
- "rmdebuggeroperation.cpp", "rmdebuggeroperation.h",
- "rmdeviceoperation.cpp", "rmdeviceoperation.h",
- "rmkeysoperation.cpp",
- "rmkeysoperation.h",
- "rmkitoperation.cpp",
- "rmkitoperation.h",
- "rmqtoperation.cpp",
- "rmqtoperation.h",
- "rmtoolchainoperation.cpp",
- "rmtoolchainoperation.h",
- "settings.cpp",
- "settings.h",
]
-
- Group {
- name: "Utils"
- prefix: libsDir + "/utils/"
- files: [
- "commandline.cpp", "commandline.h",
- "environment.cpp", "environment.h",
- "filepath.cpp", "filepath.h",
- "fileutils.cpp", "fileutils.h",
- "hostosinfo.cpp", "hostosinfo.h",
- "macroexpander.cpp", "macroexpander.h",
- "namevaluedictionary.cpp", "namevaluedictionary.h",
- "namevalueitem.cpp", "namevalueitem.h",
- "persistentsettings.cpp", "persistentsettings.h",
- "porting.h",
- "qtcassert.cpp", "qtcassert.h",
- "savefile.cpp", "savefile.h",
- "stringutils.cpp"
- ]
- }
- Group {
- name: "Utils/macOS"
- condition: qbs.targetOS.contains("macos")
- prefix: libsDir + "/utils/"
- files: [
- "fileutils_mac.h",
- "fileutils_mac.mm",
- ]
- }
}
diff --git a/src/tools/sdktool/sdktoollib.qbs b/src/tools/sdktool/sdktoollib.qbs
new file mode 100644
index 00000000000..180dd14ce2f
--- /dev/null
+++ b/src/tools/sdktool/sdktoollib.qbs
@@ -0,0 +1,109 @@
+import qbs 1.0
+
+QtcLibrary {
+ name: "sdktoolLib"
+
+ type: "staticlibrary"
+
+ Depends { name: "Qt.core" }
+ Depends { name: "app_version_header" }
+ Depends { name: "Qt.testlib"; condition: project.withAutotests }
+
+ property string libsDir: path + "/../../libs"
+
+ cpp.defines: base.concat([
+ "UTILS_LIBRARY",
+ qbs.targetOS.contains("macos")
+ ? 'DATA_PATH="."'
+ : qbs.targetOS.contains("windows") ? 'DATA_PATH="../share/qtcreator"'
+ : 'DATA_PATH="../../share/qtcreator"'
+ ])
+ cpp.dynamicLibraries: {
+ if (qbs.targetOS.contains("windows"))
+ return ["user32", "shell32"]
+ }
+ Properties {
+ condition: qbs.targetOS.contains("macos")
+ cpp.frameworks: ["Foundation"]
+ }
+ cpp.includePaths: base.concat([libsDir])
+
+ Export {
+ Depends { name: "cpp" }
+ cpp.includePaths: [exportingProduct.sourceDirectory, exportingProduct.libsDir]
+ }
+
+ files: [
+ "addabiflavor.cpp",
+ "addabiflavor.h",
+ "addcmakeoperation.cpp",
+ "addcmakeoperation.h",
+ "adddebuggeroperation.cpp",
+ "adddebuggeroperation.h",
+ "adddeviceoperation.cpp",
+ "adddeviceoperation.h",
+ "addkeysoperation.cpp",
+ "addkeysoperation.h",
+ "addkitoperation.cpp",
+ "addkitoperation.h",
+ "addqtoperation.cpp",
+ "addqtoperation.h",
+ "addtoolchainoperation.cpp",
+ "addtoolchainoperation.h",
+ "addvalueoperation.cpp",
+ "addvalueoperation.h",
+ "findkeyoperation.cpp",
+ "findkeyoperation.h",
+ "findvalueoperation.cpp",
+ "findvalueoperation.h",
+ "getoperation.cpp",
+ "getoperation.h",
+ "operation.cpp",
+ "operation.h",
+ "rmcmakeoperation.cpp",
+ "rmcmakeoperation.h",
+ "rmdebuggeroperation.cpp",
+ "rmdebuggeroperation.h",
+ "rmdeviceoperation.cpp",
+ "rmdeviceoperation.h",
+ "rmkeysoperation.cpp",
+ "rmkeysoperation.h",
+ "rmkitoperation.cpp",
+ "rmkitoperation.h",
+ "rmqtoperation.cpp",
+ "rmqtoperation.h",
+ "rmtoolchainoperation.cpp",
+ "rmtoolchainoperation.h",
+ "settings.cpp",
+ "settings.h",
+ ]
+
+ Group {
+ name: "Utils"
+ prefix: libsDir + "/utils/"
+ files: [
+ "commandline.cpp", "commandline.h",
+ "environment.cpp", "environment.h",
+ "filepath.cpp", "filepath.h",
+ "fileutils.cpp", "fileutils.h",
+ "hostosinfo.cpp", "hostosinfo.h",
+ "macroexpander.cpp", "macroexpander.h",
+ "namevaluedictionary.cpp", "namevaluedictionary.h",
+ "namevalueitem.cpp", "namevalueitem.h",
+ "persistentsettings.cpp", "persistentsettings.h",
+ "porting.h",
+ "qtcassert.cpp", "qtcassert.h",
+ "savefile.cpp", "savefile.h",
+ "stringutils.cpp"
+ ]
+ }
+ Group {
+ name: "Utils/macOS"
+ condition: qbs.targetOS.contains("macos")
+ prefix: libsDir + "/utils/"
+ files: [
+ "fileutils_mac.h",
+ "fileutils_mac.mm",
+ ]
+ }
+}
diff --git a/src/tools/tools.qbs b/src/tools/tools.qbs
index 2ebd01f9c93..d6e70817731 100644
--- a/src/tools/tools.qbs
+++ b/src/tools/tools.qbs
@@ -15,6 +15,7 @@ Project {
"qtc-askpass/qtc-askpass.qbs",
"qtpromaker/qtpromaker.qbs",
"sdktool/sdktool.qbs",
+ "sdktool/sdktoollib.qbs",
"valgrindfake/valgrindfake.qbs",
"iostool/iostool.qbs",
].concat(project.additionalTools)
diff --git a/tests/auto/sdktool/CMakeLists.txt b/tests/auto/sdktool/CMakeLists.txt
index 4ee183ad3d4..622a2eb6293 100644
--- a/tests/auto/sdktool/CMakeLists.txt
+++ b/tests/auto/sdktool/CMakeLists.txt
@@ -1,6 +1,6 @@
qtc_output_binary_dir(_output_binary_dir)
add_qtc_test(tst_sdktool
- DEPENDS Utils
+ DEPENDS sdktoolLib
DEFINES SDKTOOL_DIR="${_output_binary_dir}/${IDE_LIBEXEC_PATH}"
SOURCES tst_sdktool.cpp
)
diff --git a/tests/auto/sdktool/sdktool.qbs b/tests/auto/sdktool/sdktool.qbs
index c69491d198e..18325929072 100644
--- a/tests/auto/sdktool/sdktool.qbs
+++ b/tests/auto/sdktool/sdktool.qbs
@@ -3,6 +3,8 @@ import qbs.FileInfo
QtcAutotest {
name: "sdktool autotest"
+ Depends { name: "sdktoolLib" }
+
Group {
name: "Test sources"
files: "tst_sdktool.cpp"
diff --git a/tests/auto/sdktool/tst_sdktool.cpp b/tests/auto/sdktool/tst_sdktool.cpp
index 4cb4876dd8a..1cacda5fe0e 100644
--- a/tests/auto/sdktool/tst_sdktool.cpp
+++ b/tests/auto/sdktool/tst_sdktool.cpp
@@ -28,27 +28,56 @@
#include <QProcess>
#include <QtTest>
+#ifndef WITH_TESTS
+#define WITH_TESTS
+#endif
+
+#include "addabiflavor.h"
+#include "addcmakeoperation.h"
+#include "adddebuggeroperation.h"
+#include "adddeviceoperation.h"
+#include "addkeysoperation.h"
+#include "addqtoperation.h"
+#include "addtoolchainoperation.h"
+#include "addvalueoperation.h"
+#include "findkeyoperation.h"
+#include "findvalueoperation.h"
+#include "getoperation.h"
+#include "rmcmakeoperation.h"
+#include "rmdebuggeroperation.h"
+#include "rmdeviceoperation.h"
+#include "rmkeysoperation.h"
+#include "rmkitoperation.h"
+#include "rmqtoperation.h"
+#include "rmtoolchainoperation.h"
+#include "addkitoperation.h"
+
class SdktoolTest : public QObject
{
Q_OBJECT
private slots:
- void testSdktool();
+ void test_AddAbiFlavorOperation() { AddAbiFlavor::unittest(); }
+ void test_AddCMakeOperation() { AddCMakeOperation::unittest(); }
+ void test_AddDebuggerOperation() { AddDebuggerOperation::unittest(); }
+ void test_AddDeviceOperation() { AddDeviceOperation::unittest(); }
+ void test_AddKeysOperation() { AddKeysOperation::unittest(); }
+ void test_AddKitOperation() { AddKitOperation::unittest(); }
+ void test_AddQtOperation() { AddQtOperation::unittest(); }
+ void test_AddToolchainOperation() { AddToolChainOperation::unittest(); }
+ void test_AddValueOperation() { AddValueOperation::unittest(); }
+ void test_FindKeyOperation() { FindKeyOperation::unittest(); }
+ void test_FindValueOperation() { FindValueOperation::unittest(); }
+ void test_GetOperation() { GetOperation::unittest(); }
+ void test_RmCMakeOperation() { RmCMakeOperation::unittest(); }
+ void test_RmDebuggerOperation() { RmDebuggerOperation::unittest(); }
+ void test_RmDeviceOperation() { RmDeviceOperation::unittest(); }
+ void test_RmKeysOperation() { RmKeysOperation::unittest(); }
+ void test_RmKitOperation() { RmKitOperation::unittest(); }
+ void test_RmQtOperation() { RmQtOperation::unittest(); }
+ void test_RmToolChainOperation() { RmToolChainOperation::unittest(); }
};
-void SdktoolTest::testSdktool()
-{
- QDir rootDir(SDKTOOL_DIR);
- QProcess process;
- process.start(rootDir.absoluteFilePath(QLatin1String("sdktool")),
- QStringList() << QLatin1String("-test"));
- process.waitForFinished();
- QByteArray output = process.readAllStandardError();
- for (auto line : output.split('\n'))
- qDebug() << line;
- QCOMPARE(process.exitCode(), 0);
-}
-
QTEST_MAIN(SdktoolTest)
#include "tst_sdktool.moc"