SDKtool: De-noise addkitoperation

Change-Id: I362b5dcda37631e746311f2ed13264ba97ba232c
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2016-07-15 12:42:00 +02:00
parent 922e5e8a77
commit a1020cc299

View File

@@ -74,31 +74,31 @@ AddKitOperation::AddKitOperation()
QString AddKitOperation::name() const QString AddKitOperation::name() const
{ {
return QLatin1String("addKit"); return "addKit";
} }
QString AddKitOperation::helpText() const QString AddKitOperation::helpText() const
{ {
return QLatin1String("add a Kit to Qt Creator"); return "add a Kit to Qt Creator";
} }
QString AddKitOperation::argumentsHelpText() const QString AddKitOperation::argumentsHelpText() const
{ {
return QLatin1String(" --id <ID> id of the new kit (required).\n" return " --id <ID> id of the new kit (required).\n"
" --name <NAME> display name of the new kit (required).\n" " --name <NAME> display name of the new kit (required).\n"
" --icon <PATH> icon of the new kit.\n" " --icon <PATH> icon of the new kit.\n"
" --debuggerid <ID> the id of the debugger to use.\n" " --debuggerid <ID> the id of the debugger to use.\n"
" (not compatible with --debugger and --debuggerengine)\n" " (not compatible with --debugger and --debuggerengine)\n"
" --debuggerengine <ENGINE> debuggerengine of the new kit.\n" " --debuggerengine <ENGINE> debuggerengine of the new kit.\n"
" --debugger <PATH> debugger of the new kit.\n" " --debugger <PATH> debugger of the new kit.\n"
" --devicetype <TYPE> device type of the new kit (required).\n" " --devicetype <TYPE> device type of the new kit (required).\n"
" --device <ID> device id to use (optional).\n" " --device <ID> device id to use (optional).\n"
" --sysroot <PATH> sysroot of the new kit.\n" " --sysroot <PATH> sysroot of the new kit.\n"
" --toolchain <ID> tool chain of the new kit.\n" " --toolchain <ID> tool chain of the new kit.\n"
" --qt <ID> Qt of the new kit.\n" " --qt <ID> Qt of the new kit.\n"
" --mkspec <PATH> mkspec of the new kit.\n" " --mkspec <PATH> mkspec of the new kit.\n"
" --env <VALUE> add a custom environment setting. [may be repeated]\n" " --env <VALUE> add a custom environment setting. [may be repeated]\n"
" <KEY> <TYPE:VALUE> extra key value pairs\n"); " <KEY> <TYPE:VALUE> extra key value pairs\n";
} }
bool AddKitOperation::setArguments(const QStringList &args) bool AddKitOperation::setArguments(const QStringList &args)
@@ -109,7 +109,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
const QString current = args.at(i); const QString current = args.at(i);
const QString next = ((i + 1) < args.count()) ? args.at(i + 1) : QString(); const QString next = ((i + 1) < args.count()) ? args.at(i + 1) : QString();
if (current == QLatin1String("--id")) { if (current == "--id") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -117,7 +117,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--name")) { if (current == "--name") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -125,7 +125,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--icon")) { if (current == "--icon") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -133,7 +133,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--debuggerengine")) { if (current == "--debuggerengine") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -146,7 +146,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--debuggerid")) { if (current == "--debuggerid") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -154,7 +154,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--debugger")) { if (current == "--debugger") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -162,7 +162,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--devicetype")) { if (current == "--devicetype") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -170,7 +170,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--device")) { if (current == "--device") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -178,7 +178,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--sysroot")) { if (current == "--sysroot") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -186,7 +186,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--toolchain")) { if (current == "--toolchain") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -194,7 +194,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--qt")) { if (current == "--qt") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -202,7 +202,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--mkspec")) { if (current == "--mkspec") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -210,7 +210,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
continue; continue;
} }
if (current == QLatin1String("--env")) { if (current == "--env") {
if (next.isNull()) if (next.isNull())
return false; return false;
++i; // skip next; ++i; // skip next;
@@ -228,7 +228,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
} }
if (m_icon.isEmpty()) if (m_icon.isEmpty())
m_icon = QLatin1String(":///DESKTOP///"); m_icon = ":///DESKTOP///";
if (m_id.isEmpty()) if (m_id.isEmpty())
std::cerr << "No id given for kit." << std::endl << std::endl; std::cerr << "No id given for kit." << std::endl << std::endl;
@@ -246,7 +246,7 @@ bool AddKitOperation::setArguments(const QStringList &args)
int AddKitOperation::execute() const int AddKitOperation::execute() const
{ {
QVariantMap map = load(QLatin1String("Profiles")); QVariantMap map = load("Profiles");
if (map.isEmpty()) if (map.isEmpty())
map = initializeKits(); map = initializeKits();
@@ -257,7 +257,7 @@ int AddKitOperation::execute() const
if (result.isEmpty() || map == result) if (result.isEmpty() || map == result)
return 2; return 2;
return save(result, QLatin1String("Profiles")) ? 0 : 3; return save(result, "Profiles") ? 0 : 3;
} }
#ifdef WITH_TESTS #ifdef WITH_TESTS
@@ -266,255 +266,180 @@ bool AddKitOperation::test() const
QVariantMap map = initializeKits(); QVariantMap map = initializeKits();
QVariantMap tcMap = AddToolChainOperation::initializeToolChains(); QVariantMap tcMap = AddToolChainOperation::initializeToolChains();
tcMap = AddToolChainOperation::addToolChain(tcMap, QLatin1String("{tc-id}"), QLatin1String("TC"), tcMap = AddToolChainOperation::addToolChain(tcMap, "{tc-id}", "TC", "/usr/bin/gcc",
QLatin1String("/usr/bin/gcc"), "x86-linux-generic-elf-32bit",
QLatin1String("x86-linux-generic-elf-32bit"), "x86-linux-generic-elf-32bit",
QLatin1String("x86-linux-generic-elf-32bit"),
KeyValuePairList()); KeyValuePairList());
QVariantMap qtMap = AddQtOperation::initializeQtVersions(); QVariantMap qtMap = AddQtOperation::initializeQtVersions();
qtMap = AddQtOperation::addQt(qtMap, QLatin1String("{qt-id}"), QLatin1String("Qt"), qtMap = AddQtOperation::addQt(qtMap, "{qt-id}", "Qt", "desktop-qt", "/usr/bin/qmake",
QLatin1String("desktop-qt"), QLatin1String("/usr/bin/qmake"),
KeyValuePairList()); KeyValuePairList());
QVariantMap devMap = AddDeviceOperation::initializeDevices(); QVariantMap devMap = AddDeviceOperation::initializeDevices();
devMap = AddDeviceOperation::addDevice(devMap, QLatin1String("{dev-id}"), QLatin1String("Dev"), 0, 0, devMap = AddDeviceOperation::addDevice(devMap, "{dev-id}", "Dev", 0, 0,
QLatin1String("HWplatform"), QLatin1String("SWplatform"), "HWplatform", "SWplatform",
QLatin1String("localhost"), QLatin1String("10000-11000"), "localhost", "10000-11000",
QLatin1String("localhost"), QLatin1String(""), 42, "localhost", "", 42,
QLatin1String("desktop"), QLatin1String(""), 22, 10000, "desktop", "", 22, 10000,
QLatin1String("uname"), 1, "uname", 1,
KeyValuePairList()); KeyValuePairList());
QStringList env; const QStringList env = { "TEST=1", "PATH" };
env << QLatin1String("TEST=1") << QLatin1String("PATH");
if (map.count() != 3 if (map.count() != 3
|| !map.contains(QLatin1String(VERSION)) || !map.contains(VERSION) || map.value(VERSION).toInt() != 1
|| map.value(QLatin1String(VERSION)).toInt() != 1 || !map.contains(COUNT) || map.value(COUNT).toInt() != 0
|| !map.contains(QLatin1String(COUNT)) || !map.contains(DEFAULT) || !map.value(DEFAULT).toString().isEmpty())
|| map.value(QLatin1String(COUNT)).toInt() != 0
|| !map.contains(QLatin1String(DEFAULT))
|| !map.value(QLatin1String(DEFAULT)).toString().isEmpty())
return false; return false;
// Fail if TC is not there: // Fail if TC is not there:
QVariantMap empty = addKit(map, tcMap, qtMap, devMap, QVariantMap empty = addKit(map, tcMap, qtMap, devMap,
QLatin1String("testId"), QLatin1String("Test Kit"), QLatin1String("/tmp/icon.png"), "testId", "Test Kit", "/tmp/icon.png", QString(), 1,
QString(), 1, QLatin1String("/usr/bin/gdb-test"), "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QString(), "{tcXX-id}", "{qt-id}", "unsupported/mkspec", QStringList(),
QLatin1String("{tcXX-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QStringList(),
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (!empty.isEmpty()) if (!empty.isEmpty())
return false; return false;
// Do not fail if TC is an ABI: // Do not fail if TC is an ABI:
empty = addKit(map, tcMap, qtMap, devMap, empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1,
QLatin1String("testId"), QLatin1String("Test Kit"), QLatin1String("/tmp/icon.png"), "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
QString(), 1, QLatin1String("/usr/bin/gdb-test"), "x86-linux-generic-elf-64bit", "{qt-id}", "unsupported/mkspec", env,
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QString(), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QLatin1String("x86-linux-generic-elf-64bit"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (empty.isEmpty()) if (empty.isEmpty())
return false; return false;
// QTCREATORBUG-11983, mach_o was not covered by the first attempt to fix this. // QTCREATORBUG-11983, mach_o was not covered by the first attempt to fix this.
empty = addKit(map, tcMap, qtMap, devMap, empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1,
QLatin1String("testId"), QLatin1String("Test Kit"), QLatin1String("/tmp/icon.png"), "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
QString(), 1, QLatin1String("/usr/bin/gdb-test"), "x86-macos-generic-mach_o-64bit", "{qt-id}", "unsupported/mkspec", env,
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QString(), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QLatin1String("x86-macos-generic-mach_o-64bit"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (empty.isEmpty()) if (empty.isEmpty())
return false; return false;
// Fail if Qt is not there: // Fail if Qt is not there:
empty = addKit(map, tcMap, qtMap, devMap, empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1,
QLatin1String("testId"), QLatin1String("Test Kit"), QLatin1String("/tmp/icon.png"), "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), "{tc-id}", "{qtXX-id}",
QString(), 1, QLatin1String("/usr/bin/gdb-test"), "unsupported/mkspec", env,
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QString(), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QLatin1String("{tc-id}"), QLatin1String("{qtXX-id}"), QLatin1String("unsupported/mkspec"),
env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (!empty.isEmpty()) if (!empty.isEmpty())
return false; return false;
// Fail if dev is not there: // Fail if dev is not there:
empty = addKit(map, tcMap, qtMap, devMap, empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1,
QLatin1String("testId"), QLatin1String("Test Kit"), QLatin1String("/tmp/icon.png"), "/usr/bin/gdb-test", "Desktop", "{devXX-id}", QString(), "{tc-id}", "{qt-id}",
QString(), 1, QLatin1String("/usr/bin/gdb-test"), "unsupported/mkspec", env,
QLatin1String("Desktop"), QLatin1String("{devXX-id}"), QString(), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (!empty.isEmpty()) if (!empty.isEmpty())
return false; return false;
// Profile 0: // Profile 0:
map = addKit(map, tcMap, qtMap, devMap, map = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1,
QLatin1String("testId"), QLatin1String("Test Kit"), QLatin1String("/tmp/icon.png"), "/usr/bin/gdb-test", "Desktop", QString(), QString(), "{tc-id}", "{qt-id}",
QString(), 1, QLatin1String("/usr/bin/gdb-test"), "unsupported/mkspec", env,
QLatin1String("Desktop"), QString(), QString(), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (map.count() != 4 if (map.count() != 4
|| !map.contains(QLatin1String(VERSION)) || !map.contains(VERSION) || map.value(VERSION).toInt() != 1
|| map.value(QLatin1String(VERSION)).toInt() != 1 || !map.contains(COUNT) || map.value(COUNT).toInt() != 1
|| !map.contains(QLatin1String(COUNT)) || !map.contains(DEFAULT) || map.value(DEFAULT).toString() != "testId"
|| map.value(QLatin1String(COUNT)).toInt() != 1 || !map.contains("Profile.0"))
|| !map.contains(QLatin1String(DEFAULT))
|| map.value(QLatin1String(DEFAULT)).toString() != QLatin1String("testId")
|| !map.contains(QLatin1String("Profile.0")))
return false; return false;
QVariantMap profile0 = map.value(QLatin1String("Profile.0")).toMap(); QVariantMap profile0 = map.value("Profile.0").toMap();
if (profile0.count() != 6 if (profile0.count() != 6
|| !profile0.contains(QLatin1String(ID)) || !profile0.contains(ID) || profile0.value(ID).toString() != "testId"
|| profile0.value(QLatin1String(ID)).toString() != QLatin1String("testId") || !profile0.contains(DISPLAYNAME) || profile0.value(DISPLAYNAME).toString() != "Test Kit"
|| !profile0.contains(QLatin1String(DISPLAYNAME)) || !profile0.contains(ICON) || profile0.value(ICON).toString() != "/tmp/icon.png"
|| profile0.value(QLatin1String(DISPLAYNAME)).toString() != QLatin1String("Test Kit") || !profile0.contains(DATA) || profile0.value(DATA).type() != QVariant::Map
|| !profile0.contains(QLatin1String(ICON)) || !profile0.contains(AUTODETECTED) || profile0.value(AUTODETECTED).toBool() != true
|| profile0.value(QLatin1String(ICON)).toString() != QLatin1String("/tmp/icon.png") || !profile0.contains(SDK) || profile0.value(SDK).toBool() != true)
|| !profile0.contains(QLatin1String(DATA))
|| profile0.value(QLatin1String(DATA)).type() != QVariant::Map
|| !profile0.contains(QLatin1String(AUTODETECTED))
|| profile0.value(QLatin1String(AUTODETECTED)).toBool() != true
|| !profile0.contains(QLatin1String(SDK))
|| profile0.value(QLatin1String(SDK)).toBool() != true)
return false; return false;
QVariantMap data = profile0.value(QLatin1String(DATA)).toMap(); QVariantMap data = profile0.value(DATA).toMap();
if (data.count() != 7 if (data.count() != 7
|| !data.contains(QLatin1String(DEBUGGER)) || !data.contains(DEBUGGER) || data.value(DEBUGGER).type() != QVariant::Map
|| data.value(QLatin1String(DEBUGGER)).type() != QVariant::Map || !data.contains(DEVICE_TYPE) || data.value(DEVICE_TYPE).toString() != "Desktop"
|| !data.contains(QLatin1String(DEVICE_TYPE)) || !data.contains(TOOLCHAIN) || data.value(TOOLCHAIN).toString() != "{tc-id}"
|| data.value(QLatin1String(DEVICE_TYPE)).toString() != QLatin1String("Desktop") || !data.contains(QT) || data.value(QT).toString() != "SDK.{qt-id}"
|| !data.contains(QLatin1String(TOOLCHAIN)) || !data.contains(MKSPEC) || data.value(MKSPEC).toString() != "unsupported/mkspec"
|| data.value(QLatin1String(TOOLCHAIN)).toString() != QLatin1String("{tc-id}") || !data.contains("extraData") || data.value("extraData").toString() != "extraValue")
|| !data.contains(QLatin1String(QT))
|| data.value(QLatin1String(QT)).toString() != QLatin1String("SDK.{qt-id}")
|| !data.contains(QLatin1String(MKSPEC))
|| data.value(QLatin1String(MKSPEC)).toString() != QLatin1String("unsupported/mkspec")
|| !data.contains(QLatin1String("extraData"))
|| data.value(QLatin1String("extraData")).toString() != QLatin1String("extraValue"))
return false; return false;
// Ignore existing ids: // Ignore existing ids:
QVariantMap result = addKit(map, tcMap, qtMap, devMap, QVariantMap result = addKit(map, tcMap, qtMap, devMap, "testId", "Test Qt Version X",
QLatin1String("testId"), QLatin1String("Test Qt Version X"), QLatin1String("/tmp/icon3.png"), "/tmp/icon3.png", QString(), 1, "/usr/bin/gdb-test3", "Desktop",
QString(), 1, QLatin1String("/usr/bin/gdb-test3"), QString(), QString(), "{tc-id}", "{qt-id}", "unsupported/mkspec", env,
QLatin1String("Desktop"), QString(), QString(), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (!result.isEmpty()) if (!result.isEmpty())
return false; return false;
// Profile 1: Make sure name is unique: // Profile 1: Make sure name is unique:
map = addKit(map, tcMap, qtMap, devMap, map = addKit(map, tcMap, qtMap, devMap, "testId2", "Test Kit2", "/tmp/icon2.png", QString(), 1,
QLatin1String("testId2"), QLatin1String("Test Kit2"), QLatin1String("/tmp/icon2.png"), "/usr/bin/gdb-test2", "Desktop", "{dev-id}", "/sys/root\\\\", "{tc-id}",
QString(), 1, QLatin1String("/usr/bin/gdb-test2"), "{qt-id}", "unsupported/mkspec", env,
QLatin1String("Desktop"), QLatin1String("{dev-id}"), QLatin1String("/sys/root\\\\"), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (map.count() != 5 if (map.count() != 5
|| !map.contains(QLatin1String(VERSION)) || !map.contains(VERSION) || map.value(VERSION).toInt() != 1
|| map.value(QLatin1String(VERSION)).toInt() != 1 || !map.contains(COUNT) || map.value(COUNT).toInt() != 2
|| !map.contains(QLatin1String(COUNT)) || !map.contains(DEFAULT) || map.value(DEFAULT).toInt() != 0
|| map.value(QLatin1String(COUNT)).toInt() != 2 || !map.contains("Profile.0")
|| !map.contains(QLatin1String(DEFAULT)) || !map.contains("Profile.1"))
|| map.value(QLatin1String(DEFAULT)).toInt() != 0
|| !map.contains(QLatin1String("Profile.0"))
|| !map.contains(QLatin1String("Profile.1")))
if (map.value(QLatin1String("Profile.0")) != profile0) if (map.value("Profile.0") != profile0)
return false; return false;
QVariantMap profile1 = map.value(QLatin1String("Profile.1")).toMap(); QVariantMap profile1 = map.value("Profile.1").toMap();
if (profile1.count() != 6 if (profile1.count() != 6
|| !profile1.contains(QLatin1String(ID)) || !profile1.contains(ID) || profile1.value(ID).toString() != "testId2"
|| profile1.value(QLatin1String(ID)).toString() != QLatin1String("testId2") || !profile1.contains(DISPLAYNAME) || profile1.value(DISPLAYNAME).toString() != "Test Kit2"
|| !profile1.contains(QLatin1String(DISPLAYNAME)) || !profile1.contains(ICON) || profile1.value(ICON).toString() != "/tmp/icon2.png"
|| profile1.value(QLatin1String(DISPLAYNAME)).toString() != QLatin1String("Test Kit2") || !profile1.contains(DATA) || profile1.value(DATA).type() != QVariant::Map
|| !profile1.contains(QLatin1String(ICON)) || !profile1.contains(AUTODETECTED) || profile1.value(AUTODETECTED).toBool() != true
|| profile1.value(QLatin1String(ICON)).toString() != QLatin1String("/tmp/icon2.png") || !profile1.contains(SDK) || profile1.value(SDK).toBool() != true)
|| !profile1.contains(QLatin1String(DATA))
|| profile1.value(QLatin1String(DATA)).type() != QVariant::Map
|| !profile1.contains(QLatin1String(AUTODETECTED))
|| profile1.value(QLatin1String(AUTODETECTED)).toBool() != true
|| !profile1.contains(QLatin1String(SDK))
|| profile1.value(QLatin1String(SDK)).toBool() != true)
return false; return false;
data = profile1.value(QLatin1String(DATA)).toMap(); data = profile1.value(DATA).toMap();
if (data.count() != 9 if (data.count() != 9
|| !data.contains(QLatin1String(DEBUGGER)) || !data.contains(DEBUGGER) || data.value(DEBUGGER).type() != QVariant::Map
|| data.value(QLatin1String(DEBUGGER)).type() != QVariant::Map || !data.contains(DEVICE_TYPE) || data.value(DEVICE_TYPE).toString() != "Desktop"
|| !data.contains(QLatin1String(DEVICE_TYPE)) || !data.contains(DEVICE_ID) || data.value(DEVICE_ID).toString() != "{dev-id}"
|| data.value(QLatin1String(DEVICE_TYPE)).toString() != QLatin1String("Desktop") || !data.contains(SYSROOT) || data.value(SYSROOT).toString() != "/sys/root\\\\"
|| !data.contains(QLatin1String(DEVICE_ID)) || !data.contains(TOOLCHAIN) || data.value(TOOLCHAIN).toString() != "{tc-id}"
|| data.value(QLatin1String(DEVICE_ID)).toString() != QLatin1String("{dev-id}") || !data.contains(QT) || data.value(QT).toString() != "SDK.{qt-id}"
|| !data.contains(QLatin1String(SYSROOT)) || !data.contains(MKSPEC) || data.value(MKSPEC).toString() != "unsupported/mkspec"
|| data.value(QLatin1String(SYSROOT)).toString() != QLatin1String("/sys/root\\\\") || !data.contains(ENV) || data.value(ENV).toStringList() != env
|| !data.contains(QLatin1String(TOOLCHAIN)) || !data.contains("extraData") || data.value("extraData").toString() != "extraValue")
|| data.value(QLatin1String(TOOLCHAIN)).toString() != QLatin1String("{tc-id}")
|| !data.contains(QLatin1String(QT))
|| data.value(QLatin1String(QT)).toString() != QLatin1String("SDK.{qt-id}")
|| !data.contains(QLatin1String(MKSPEC))
|| data.value(QLatin1String(MKSPEC)).toString() != QLatin1String("unsupported/mkspec")
|| !data.contains(QLatin1String(ENV))
|| data.value(QLatin1String(ENV)).toStringList() != env
|| !data.contains(QLatin1String("extraData"))
|| data.value(QLatin1String("extraData")).toString() != QLatin1String("extraValue"))
return false; return false;
// Profile 2: Test debugger id: // Profile 2: Test debugger id:
map = addKit(map, tcMap, qtMap, devMap, map = addKit(map, tcMap, qtMap, devMap, "test with debugger Id", "Test debugger Id",
QLatin1String("test with debugger Id"), QLatin1String("Test debugger Id"), QLatin1String("/tmp/icon2.png"), "/tmp/icon2.png", "debugger Id", 0, QString(), "Desktop", QString(), QString(),
QString::fromLatin1("debugger Id"), 0, QString(), "{tc-id}", "{qt-id}", "unsupported/mkspec", env,
QLatin1String("Desktop"), QString(), QString(), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) }));
QLatin1String("{tc-id}"), QLatin1String("{qt-id}"), QLatin1String("unsupported/mkspec"),
env,
KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue"))));
if (map.count() != 6 if (map.count() != 6
|| !map.contains(QLatin1String(VERSION)) || !map.contains(VERSION) || map.value(VERSION).toInt() != 1
|| map.value(QLatin1String(VERSION)).toInt() != 1 || !map.contains(COUNT) || map.value(COUNT).toInt() != 3
|| !map.contains(QLatin1String(COUNT)) || !map.contains(DEFAULT) || map.value(DEFAULT).toInt() != 0
|| map.value(QLatin1String(COUNT)).toInt() != 3 || !map.contains("Profile.0")
|| !map.contains(QLatin1String(DEFAULT)) || !map.contains("Profile.1")
|| map.value(QLatin1String(DEFAULT)).toInt() != 0 || !map.contains("Profile.2"))
|| !map.contains(QLatin1String("Profile.0"))
|| !map.contains(QLatin1String("Profile.1"))
|| !map.contains(QLatin1String("Profile.2")))
if (map.value(QLatin1String("Profile.0")) != profile0) if (map.value("Profile.0") != profile0)
return false; return false;
if (map.value(QLatin1String("Profile.1")) != profile1) if (map.value("Profile.1") != profile1)
return false; return false;
QVariantMap profile2 = map.value(QLatin1String("Profile.2")).toMap(); QVariantMap profile2 = map.value("Profile.2").toMap();
if (profile2.count() != 6 if (profile2.count() != 6
|| !profile2.contains(QLatin1String(ID)) || !profile2.contains(ID) || profile2.value(ID).toString() != "test with debugger Id"
|| profile2.value(QLatin1String(ID)).toString() != QLatin1String("test with debugger Id") || !profile2.contains(DISPLAYNAME) || profile2.value(DISPLAYNAME).toString() != "Test debugger Id"
|| !profile2.contains(QLatin1String(DISPLAYNAME)) || !profile2.contains(ICON) || profile2.value(ICON).toString() != "/tmp/icon2.png"
|| profile2.value(QLatin1String(DISPLAYNAME)).toString() != QLatin1String("Test debugger Id") || !profile2.contains(DATA) || profile2.value(DATA).type() != QVariant::Map
|| !profile2.contains(QLatin1String(ICON)) || !profile2.contains(AUTODETECTED) || profile2.value(AUTODETECTED).toBool() != true
|| profile2.value(QLatin1String(ICON)).toString() != QLatin1String("/tmp/icon2.png") || !profile2.contains(SDK) || profile2.value(SDK).toBool() != true)
|| !profile2.contains(QLatin1String(DATA))
|| profile2.value(QLatin1String(DATA)).type() != QVariant::Map
|| !profile2.contains(QLatin1String(AUTODETECTED))
|| profile2.value(QLatin1String(AUTODETECTED)).toBool() != true
|| !profile2.contains(QLatin1String(SDK))
|| profile2.value(QLatin1String(SDK)).toBool() != true)
return false; return false;
data = profile2.value(QLatin1String(DATA)).toMap(); data = profile2.value(DATA).toMap();
if (data.count() != 7 if (data.count() != 7
|| !data.contains(QLatin1String(DEBUGGER)) || !data.contains(DEBUGGER) || data.value(DEBUGGER).toString() != "debugger Id")
|| data.value(QLatin1String(DEBUGGER)).toString() != QLatin1String("debugger Id"))
return false; return false;
return true; return true;
@@ -530,9 +455,9 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map,
const QString &mkspec, const QStringList &env, const QString &mkspec, const QStringList &env,
const KeyValuePairList &extra) const KeyValuePairList &extra)
{ {
QVariantMap tcMap = load(QLatin1String("ToolChains")); QVariantMap tcMap = load("ToolChains");
QVariantMap qtMap = load(QLatin1String("QtVersions")); QVariantMap qtMap = load("QtVersions");
QVariantMap devMap = load(QLatin1String("Devices")); QVariantMap devMap = load("Devices");
return addKit(map, tcMap, qtMap, devMap, id, displayName, icon, debuggerId, debuggerType, return addKit(map, tcMap, qtMap, devMap, id, displayName, icon, debuggerId, debuggerType,
debugger, deviceType, device, sysRoot, tc, qt, mkspec, env, extra); debugger, deviceType, device, sysRoot, tc, qt, mkspec, env, extra);
@@ -552,7 +477,7 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
QStringList valueKeys = FindValueOperation::findValue(map, QVariant(id)); QStringList valueKeys = FindValueOperation::findValue(map, QVariant(id));
bool hasId = false; bool hasId = false;
foreach (const QString &k, valueKeys) { foreach (const QString &k, valueKeys) {
if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(ID))) { if (k.endsWith(QString('/') + ID)) {
hasId = true; hasId = true;
break; break;
} }
@@ -563,7 +488,7 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
} }
if (!tc.isEmpty() && !AddToolChainOperation::exists(tcMap, tc)) { if (!tc.isEmpty() && !AddToolChainOperation::exists(tcMap, tc)) {
QRegExp abiRegExp = QRegExp(QLatin1String("[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-(8|16|32|64|128)bit")); QRegExp abiRegExp = QRegExp("[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-(8|16|32|64|128)bit");
if (!abiRegExp.exactMatch(tc)) { if (!abiRegExp.exactMatch(tc)) {
std::cerr << "Error: Toolchain " << qPrintable(tc) << " does not exist." << std::endl; std::cerr << "Error: Toolchain " << qPrintable(tc) << " does not exist." << std::endl;
return QVariantMap(); return QVariantMap();
@@ -571,7 +496,7 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
} }
QString qtId = qt; QString qtId = qt;
if (!qtId.isEmpty() && !qtId.startsWith(QLatin1String("SDK."))) if (!qtId.isEmpty() && !qtId.startsWith("SDK."))
qtId = QString::fromLatin1("SDK.") + qt; qtId = QString::fromLatin1("SDK.") + qt;
if (!qtId.isEmpty() && !AddQtOperation::exists(qtMap, qtId)) { if (!qtId.isEmpty() && !AddQtOperation::exists(qtMap, qtId)) {
std::cerr << "Error: Qt " << qPrintable(qtId) << " does not exist." << std::endl; std::cerr << "Error: Qt " << qPrintable(qtId) << " does not exist." << std::endl;
@@ -584,72 +509,59 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
// Find position to insert: // Find position to insert:
bool ok; bool ok;
int count = GetOperation::get(map, QLatin1String(COUNT)).toInt(&ok); int count = GetOperation::get(map, COUNT).toInt(&ok);
if (!ok || count < 0) { if (!ok || count < 0) {
std::cerr << "Error: Count found in kits file seems wrong." << std::endl; std::cerr << "Error: Count found in kits file seems wrong." << std::endl;
return QVariantMap(); return QVariantMap();
} }
const QString kit = QString::fromLatin1(PREFIX) + QString::number(count); const QString kit = QString::fromLatin1(PREFIX) + QString::number(count);
QString defaultKit = GetOperation::get(map, QLatin1String(DEFAULT)).toString(); QString defaultKit = GetOperation::get(map, DEFAULT).toString();
if (defaultKit.isEmpty()) if (defaultKit.isEmpty())
defaultKit = id; defaultKit = id;
// remove data: // remove data:
QStringList toRemove; QVariantMap cleaned = RmKeysOperation::rmKeys(map, { COUNT, DEFAULT });
toRemove << QLatin1String(COUNT) << QLatin1String(DEFAULT);
QVariantMap cleaned = RmKeysOperation::rmKeys(map, toRemove);
// Sanity check: Make sure displayName is unique. // Sanity check: Make sure displayName is unique.
QStringList nameKeys = FindKeyOperation::findKey(map, QLatin1String(DISPLAYNAME)); QStringList nameKeys = FindKeyOperation::findKey(map, DISPLAYNAME);
QStringList nameList; QStringList nameList;
foreach (const QString &nameKey, nameKeys) foreach (const QString &nameKey, nameKeys)
nameList << GetOperation::get(map, nameKey).toString(); nameList << GetOperation::get(map, nameKey).toString();
const QString uniqueName = makeUnique(displayName, nameList); const QString uniqueName = makeUnique(displayName, nameList);
// insert data: // insert data:
KeyValuePairList data; KeyValuePairList data = { KeyValuePair({ kit, ID }, QVariant(id)),
data << KeyValuePair(QStringList() << kit << QLatin1String(ID), QVariant(id)); KeyValuePair({ kit, DISPLAYNAME }, QVariant(uniqueName)),
data << KeyValuePair(QStringList() << kit << QLatin1String(DISPLAYNAME), QVariant(uniqueName)); KeyValuePair({ kit, ICON }, QVariant(icon)),
data << KeyValuePair(QStringList() << kit << QLatin1String(ICON), QVariant(icon)); KeyValuePair({ kit, AUTODETECTED }, QVariant(true)),
data << KeyValuePair(QStringList() << kit << QLatin1String(AUTODETECTED), QVariant(true)); KeyValuePair({ kit, SDK }, QVariant(true)) };
data << KeyValuePair(QStringList() << kit << QLatin1String(SDK), QVariant(true));
if (!debuggerId.isEmpty() || !debugger.isEmpty()) { if (!debuggerId.isEmpty() || !debugger.isEmpty()) {
if (debuggerId.isEmpty()) { if (debuggerId.isEmpty()) {
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) data << KeyValuePair({ kit, DATA, DEBUGGER, DEBUGGER_ENGINE }, QVariant(debuggerType));
<< QLatin1String(DEBUGGER) << QLatin1String(DEBUGGER_ENGINE), QVariant(debuggerType)); data << KeyValuePair({ kit, DATA, DEBUGGER, DEBUGGER_BINARY }, QVariant(debugger));
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA)
<< QLatin1String(DEBUGGER) << QLatin1String(DEBUGGER_BINARY), QVariant(debugger));
} else { } else {
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) << QLatin1String(DEBUGGER), data << KeyValuePair({ kit, DATA, DEBUGGER }, QVariant(debuggerId));
QVariant(debuggerId));
} }
} }
if (!deviceType.isNull()) if (!deviceType.isNull())
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) data << KeyValuePair({ kit, DATA, DEVICE_TYPE }, QVariant(deviceType));
<< QLatin1String(DEVICE_TYPE), QVariant(deviceType));
if (!device.isNull()) if (!device.isNull())
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) data << KeyValuePair({ kit, DATA, DEVICE_ID }, QVariant(device));
<< QLatin1String(DEVICE_ID), QVariant(device));
if (!sysRoot.isNull()) if (!sysRoot.isNull())
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) data << KeyValuePair({ kit, DATA, SYSROOT }, QVariant(sysRoot));
<< QLatin1String(SYSROOT), QVariant(sysRoot));
if (!tc.isNull()) if (!tc.isNull())
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) data << KeyValuePair({ kit, DATA, TOOLCHAIN }, QVariant(tc));
<< QLatin1String(TOOLCHAIN), QVariant(tc));
if (!qtId.isNull()) if (!qtId.isNull())
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) data << KeyValuePair({ kit, DATA, QT }, QVariant(qtId));
<< QLatin1String(QT), QVariant(qtId));
if (!mkspec.isNull()) if (!mkspec.isNull())
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) data << KeyValuePair({ kit, DATA, MKSPEC }, QVariant(mkspec));
<< QLatin1String(MKSPEC), QVariant(mkspec));
if (!env.isEmpty()) if (!env.isEmpty())
data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) data << KeyValuePair({ kit, DATA, ENV }, QVariant(env));
<< QLatin1String(ENV), QVariant(env));
data << KeyValuePair(QStringList() << QLatin1String(DEFAULT), QVariant(defaultKit)); data << KeyValuePair(DEFAULT, QVariant(defaultKit));
data << KeyValuePair(QStringList() << QLatin1String(COUNT), QVariant(count + 1)); data << KeyValuePair(COUNT, QVariant(count + 1));
KeyValuePairList qtExtraList; KeyValuePairList qtExtraList;
foreach (const KeyValuePair &pair, extra) foreach (const KeyValuePair &pair, extra)
@@ -662,8 +574,8 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
QVariantMap AddKitOperation::initializeKits() QVariantMap AddKitOperation::initializeKits()
{ {
QVariantMap map; QVariantMap map;
map.insert(QLatin1String(VERSION), 1); map.insert(VERSION, 1);
map.insert(QLatin1String(DEFAULT), QString()); map.insert(DEFAULT, QString());
map.insert(QLatin1String(COUNT), 0); map.insert(COUNT, 0);
return map; return map;
} }