diff options
-rw-r--r-- | src/libs/installer/packagemanagercoredata.cpp | 11 | ||||
-rw-r--r-- | tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp | 42 |
2 files changed, 51 insertions, 2 deletions
diff --git a/src/libs/installer/packagemanagercoredata.cpp b/src/libs/installer/packagemanagercoredata.cpp index 1113908bd..3249842aa 100644 --- a/src/libs/installer/packagemanagercoredata.cpp +++ b/src/libs/installer/packagemanagercoredata.cpp @@ -287,7 +287,10 @@ QString PackageManagerCoreData::replaceVariables(const QString &str) const break; res += str.mid(pos, pos1 - pos); const QString name = str.mid(pos1 + 1, pos2 - pos1 - 1); - res += value(name).toString(); + const QString &strValue = value(name).toString(); + if (strValue.isEmpty()) + return str; + res += strValue; pos = pos2 + 1; } res += str.mid(pos); @@ -308,7 +311,11 @@ QByteArray PackageManagerCoreData::replaceVariables(const QByteArray &ba) const break; res += ba.mid(pos, pos1 - pos); const QString name = QString::fromLocal8Bit(ba.mid(pos1 + 1, pos2 - pos1 - 1)); - res += value(name).toString().toLocal8Bit(); + + const QString &baValue = value(name).toString(); + if (baValue.isEmpty()) + return ba; + res += baValue.toLocal8Bit(); pos = pos2 + 1; } res += ba.mid(pos); diff --git a/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp b/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp index f2f397021..b2104420c 100644 --- a/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp +++ b/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp @@ -346,6 +346,48 @@ private slots: QCOMPARE(core.fromNativeSeparators(path), path); #endif } + + void testReplaceVariablesStr_data() + { + QTest::addColumn<QString>("key"); + QTest::addColumn<QString>("value"); + QTest::addColumn<QString>("result"); + + QTest::newRow("Normal variables") << "myKey" << "myValue" << "myValue"; + QTest::newRow("Nonreplaced variables") << "myNonreplaceKey" << "@myValue1@" << "@myValue1@"; + } + + void testReplaceVariablesStr() + { + QFETCH(QString, key); + QFETCH(QString, value); + QFETCH(QString, result); + + PackageManagerCore core; + core.setValue(key, value); + QCOMPARE(core.replaceVariables(value), result); + } + + void testReplaceVariablesBytearray_data() + { + QTest::addColumn<QString>("key"); + QTest::addColumn<QByteArray>("value"); + QTest::addColumn<QByteArray>("result"); + + QTest::newRow("Normal variables") << "myKey" << QByteArray("myValue") << QByteArray("myValue"); + QTest::newRow("Nonreplaced variables") << "myNonreplaceKey" << QByteArray("@myValue1@") << QByteArray("@myValue1@"); + } + + void testReplaceVariablesBytearray() + { + QFETCH(QString, key); + QFETCH(QByteArray, value); + QFETCH(QByteArray, result); + + PackageManagerCore core; + core.setValue(key, value); + QCOMPARE(core.replaceVariables(value), result); + } }; |