int AddKitOperation::execute() const { QVariantMap map = load(QLatin1String("profiles")); if (map.isEmpty()) map = initializeKits(); map = addKit(map, m_id, m_displayName, m_icon, m_debuggerEngine, m_debugger, m_deviceType.toUtf8(), m_sysRoot, m_tc, m_qt, m_mkspec, m_extra); if (map.isEmpty()) return -2; return save(map, QLatin1String("profiles")) ? 0 : -3; }
int AddKitOperation::execute() const { QVariantMap map = load("Profiles"); if (map.isEmpty()) map = initializeKits(); QVariantMap result = addKit(map, m_id, m_displayName, m_icon, m_debuggerId, m_debuggerEngine, m_debugger, m_deviceType, m_device, m_sysRoot, m_tcs, m_qt, m_mkspec, m_env, m_extra); if (result.isEmpty() || map == result) return 2; return save(result, "Profiles") ? 0 : 3; }
QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QString &id, const QString &displayName, const QString &icon, const QString &debuggerId, const quint32 &debuggerType, const QString &debugger, const QString &deviceType, const QString &device, const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &qt, const QString &mkspec, const QStringList &env, const KeyValuePairList &extra) { QVariantMap tcMap = load("ToolChains"); QVariantMap qtMap = load("QtVersions"); QVariantMap devMap = load("Devices"); return addKit(map, tcMap, qtMap, devMap, id, displayName, icon, debuggerId, debuggerType, debugger, deviceType, device, sysRoot, tcs, qt, mkspec, env, extra); }
bool AddKitOperation::test() const { QVariantMap map = initializeKits(); QVariantMap tcMap = AddToolChainOperation::initializeToolChains(); tcMap = AddToolChainOperation::addToolChain(tcMap, "{tc-id}", "langId", "TC", "/usr/bin/gcc", "x86-linux-generic-elf-32bit", "x86-linux-generic-elf-32bit", KeyValuePairList()); QVariantMap qtMap = AddQtOperation::initializeQtVersions(); qtMap = AddQtOperation::addQt(qtMap, "{qt-id}", "Qt", "desktop-qt", "/usr/bin/qmake", KeyValuePairList()); QVariantMap devMap = AddDeviceOperation::initializeDevices(); devMap = AddDeviceOperation::addDevice(devMap, "{dev-id}", "Dev", 0, 0, "HWplatform", "SWplatform", "localhost", "10000-11000", "localhost", "", 42, "desktop", "", 22, 10000, "uname", 1, KeyValuePairList()); const QStringList env = { "TEST=1", "PATH" }; if (map.count() != 3 || !map.contains(VERSION) || map.value(VERSION).toInt() != 1 || !map.contains(COUNT) || map.value(COUNT).toInt() != 0 || !map.contains(DEFAULT) || !map.value(DEFAULT).toString().isEmpty()) return false; QHash<QString, QString> tcs; tcs.insert("Cxx", "{tcXX-id}"); // Fail if TC is not there: QVariantMap empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), tcs, "{qt-id}", "unsupported/mkspec", QStringList(), KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (!empty.isEmpty()) return false; // Do not fail if TC is an ABI: tcs.clear(); tcs.insert("C", "x86-linux-generic-elf-64bit"); empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), tcs, "{qt-id}", "unsupported/mkspec", env, KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (empty.isEmpty()) return false; // QTCREATORBUG-11983, mach_o was not covered by the first attempt to fix this. tcs.insert("D", "x86-macos-generic-mach_o-64bit"); empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), tcs, "{qt-id}", "unsupported/mkspec", env, KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (empty.isEmpty()) return false; tcs.clear(); tcs.insert("Cxx", "{tc-id}"); // Fail if Qt is not there: empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, "/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), tcs, "{qtXX-id}", "unsupported/mkspec", env, KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (!empty.isEmpty()) return false; // Fail if dev is not there: empty = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, "/usr/bin/gdb-test", "Desktop", "{devXX-id}", QString(), tcs, "{qt-id}", "unsupported/mkspec", env, KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (!empty.isEmpty()) return false; // Profile 0: map = addKit(map, tcMap, qtMap, devMap, "testId", "Test Kit", "/tmp/icon.png", QString(), 1, "/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs, "{qt-id}", "unsupported/mkspec", env, KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (map.count() != 4 || !map.contains(VERSION) || map.value(VERSION).toInt() != 1 || !map.contains(COUNT) || map.value(COUNT).toInt() != 1 || !map.contains(DEFAULT) || map.value(DEFAULT).toString() != "testId" || !map.contains("Profile.0")) return false; QVariantMap profile0 = map.value("Profile.0").toMap(); if (profile0.count() != 6 || !profile0.contains(ID) || profile0.value(ID).toString() != "testId" || !profile0.contains(DISPLAYNAME) || profile0.value(DISPLAYNAME).toString() != "Test Kit" || !profile0.contains(ICON) || profile0.value(ICON).toString() != "/tmp/icon.png" || !profile0.contains(DATA) || profile0.value(DATA).type() != QVariant::Map || !profile0.contains(AUTODETECTED) || profile0.value(AUTODETECTED).toBool() != true || !profile0.contains(SDK) || profile0.value(SDK).toBool() != true) return false; QVariantMap data = profile0.value(DATA).toMap(); if (data.count() != 7 || !data.contains(DEBUGGER) || data.value(DEBUGGER).type() != QVariant::Map || !data.contains(DEVICE_TYPE) || data.value(DEVICE_TYPE).toString() != "Desktop" || !data.contains(TOOLCHAIN) || !data.contains(QT) || data.value(QT).toString() != "SDK.{qt-id}" || !data.contains(MKSPEC) || data.value(MKSPEC).toString() != "unsupported/mkspec" || !data.contains("extraData") || data.value("extraData").toString() != "extraValue") return false; QVariantMap tcOutput = data.value(TOOLCHAIN).toMap(); if (tcOutput.count() != 1 || !tcOutput.contains("Cxx") || tcOutput.value("Cxx") != "{tc-id}") return false; // Ignore existing ids: QVariantMap result = addKit(map, tcMap, qtMap, devMap, "testId", "Test Qt Version X", "/tmp/icon3.png", QString(), 1, "/usr/bin/gdb-test3", "Desktop", QString(), QString(), tcs, "{qt-id}", "unsupported/mkspec", env, KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (!result.isEmpty()) return false; // Profile 1: Make sure name is unique: map = addKit(map, tcMap, qtMap, devMap, "testId2", "Test Kit2", "/tmp/icon2.png", QString(), 1, "/usr/bin/gdb-test2", "Desktop", "{dev-id}", "/sys/root\\\\", tcs, "{qt-id}", "unsupported/mkspec", env, KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (map.count() != 5 || !map.contains(VERSION) || map.value(VERSION).toInt() != 1 || !map.contains(COUNT) || map.value(COUNT).toInt() != 2 || !map.contains(DEFAULT) || map.value(DEFAULT).toInt() != 0 || !map.contains("Profile.0") || !map.contains("Profile.1")) if (map.value("Profile.0") != profile0) return false; QVariantMap profile1 = map.value("Profile.1").toMap(); if (profile1.count() != 6 || !profile1.contains(ID) || profile1.value(ID).toString() != "testId2" || !profile1.contains(DISPLAYNAME) || profile1.value(DISPLAYNAME).toString() != "Test Kit2" || !profile1.contains(ICON) || profile1.value(ICON).toString() != "/tmp/icon2.png" || !profile1.contains(DATA) || profile1.value(DATA).type() != QVariant::Map || !profile1.contains(AUTODETECTED) || profile1.value(AUTODETECTED).toBool() != true || !profile1.contains(SDK) || profile1.value(SDK).toBool() != true) return false; data = profile1.value(DATA).toMap(); if (data.count() != 9 || !data.contains(DEBUGGER) || data.value(DEBUGGER).type() != QVariant::Map || !data.contains(DEVICE_TYPE) || data.value(DEVICE_TYPE).toString() != "Desktop" || !data.contains(DEVICE_ID) || data.value(DEVICE_ID).toString() != "{dev-id}" || !data.contains(SYSROOT) || data.value(SYSROOT).toString() != "/sys/root\\\\" || !data.contains(TOOLCHAIN) || !data.contains(QT) || data.value(QT).toString() != "SDK.{qt-id}" || !data.contains(MKSPEC) || data.value(MKSPEC).toString() != "unsupported/mkspec" || !data.contains(ENV) || data.value(ENV).toStringList() != env || !data.contains("extraData") || data.value("extraData").toString() != "extraValue") return false; tcOutput = data.value(TOOLCHAIN).toMap(); if (tcOutput.count() != 1 || !tcOutput.contains("Cxx") || tcOutput.value("Cxx") != "{tc-id}") return false; // Profile 2: Test debugger id: map = addKit(map, tcMap, qtMap, devMap, "test with debugger Id", "Test debugger Id", "/tmp/icon2.png", "debugger Id", 0, QString(), "Desktop", QString(), QString(), tcs, "{qt-id}", "unsupported/mkspec", env, KeyValuePairList({ KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")) })); if (map.count() != 6 || !map.contains(VERSION) || map.value(VERSION).toInt() != 1 || !map.contains(COUNT) || map.value(COUNT).toInt() != 3 || !map.contains(DEFAULT) || map.value(DEFAULT).toInt() != 0 || !map.contains("Profile.0") || !map.contains("Profile.1") || !map.contains("Profile.2")) if (map.value("Profile.0") != profile0) return false; if (map.value("Profile.1") != profile1) return false; QVariantMap profile2 = map.value("Profile.2").toMap(); if (profile2.count() != 6 || !profile2.contains(ID) || profile2.value(ID).toString() != "test with debugger Id" || !profile2.contains(DISPLAYNAME) || profile2.value(DISPLAYNAME).toString() != "Test debugger Id" || !profile2.contains(ICON) || profile2.value(ICON).toString() != "/tmp/icon2.png" || !profile2.contains(DATA) || profile2.value(DATA).type() != QVariant::Map || !profile2.contains(AUTODETECTED) || profile2.value(AUTODETECTED).toBool() != true || !profile2.contains(SDK) || profile2.value(SDK).toBool() != true) return false; data = profile2.value(DATA).toMap(); if (data.count() != 7 || !data.contains(DEBUGGER) || data.value(DEBUGGER).toString() != "debugger Id") return false; return true; }
bool AddKitOperation::test() const { QVariantMap map = initializeKits(); if (map.count() != 3 || !map.contains(QLatin1String(VERSION)) || map.value(QLatin1String(VERSION)).toInt() != 1 || !map.contains(QLatin1String(COUNT)) || map.value(QLatin1String(COUNT)).toInt() != 0 || !map.contains(QLatin1String(DEFAULT)) || map.value(QLatin1String(DEFAULT)).toInt() != -1) return false; map = addKit(map, QLatin1String("testId"), QLatin1String("Test Kit"), QLatin1String("/tmp/icon.png"), 1, QLatin1String("/usr/bin/gdb-test"), QByteArray("Desktop"), QString(), QLatin1String("{some-tc-id}"), QLatin1String("{some-qt-id}"), QLatin1String("unsupported/mkspec"), KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue")))); if (map.count() != 4 || !map.contains(QLatin1String(VERSION)) || map.value(QLatin1String(VERSION)).toInt() != 1 || !map.contains(QLatin1String(COUNT)) || map.value(QLatin1String(COUNT)).toInt() != 1 || !map.contains(QLatin1String(DEFAULT)) || map.value(QLatin1String(DEFAULT)).toInt() != 0 || !map.contains(QLatin1String("Profile.0"))) return false; QVariantMap profile0 = map.value(QLatin1String("Profile.0")).toMap(); if (profile0.count() != 5 || !profile0.contains(QLatin1String(ID)) || profile0.value(QLatin1String(ID)).toString() != QLatin1String("testId") || !profile0.contains(QLatin1String(DISPLAYNAME)) || profile0.value(QLatin1String(DISPLAYNAME)).toString() != QLatin1String("Test Kit") || !profile0.contains(QLatin1String(AUTODETECTED)) || profile0.value(QLatin1String(AUTODETECTED)).toBool() != true) return false; // Ignore existing ids: QVariantMap result = addKit(map, QLatin1String("testId"), QLatin1String("Test Qt Version X"), QLatin1String("/tmp/icon3.png"), 1, QLatin1String("/usr/bin/gdb-test3"), QByteArray("Desktop"), QString(), QLatin1String("{some-tc-id3}"), QLatin1String("{some-qt-id3}"), QLatin1String("unsupported/mkspec3"), KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue3")))); if (!result.isEmpty()) return false; // Make sure name is unique: map = addKit(map, QLatin1String("testId2"), QLatin1String("Test Kit2"), QLatin1String("/tmp/icon2.png"), 1, QLatin1String("/usr/bin/gdb-test2"), QByteArray("Desktop"), QString(), QLatin1String("{some-tc-id2}"), QLatin1String("{some-qt-id2}"), QLatin1String("unsupported/mkspec2"), KeyValuePairList() << KeyValuePair(QLatin1String("PE.Profile.Data/extraData"), QVariant(QLatin1String("extraValue2")))); if (map.count() != 5 || !map.contains(QLatin1String(VERSION)) || map.value(QLatin1String(VERSION)).toInt() != 1 || !map.contains(QLatin1String(COUNT)) || map.value(QLatin1String(COUNT)).toInt() != 2 || !map.contains(QLatin1String(DEFAULT)) || map.value(QLatin1String(DEFAULT)).toInt() != 0 || !map.contains(QLatin1String("Profile.0")) || !map.contains(QLatin1String("Profile.1"))) if (map.value(QLatin1String("Profile.0")) != profile0) return false; QVariantMap profile1 = map.value(QLatin1String("Profile.1")).toMap(); if (profile1.count() != 5 || !profile1.contains(QLatin1String(ID)) || profile1.value(QLatin1String(ID)).toString() != QLatin1String("testId2") || !profile1.contains(QLatin1String(DISPLAYNAME)) || profile1.value(QLatin1String(DISPLAYNAME)).toString() != QLatin1String("Test Kit2") || !profile1.contains(QLatin1String(AUTODETECTED)) || profile1.value(QLatin1String(AUTODETECTED)).toBool() != true) return false; return true; }