diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-07-17 08:59:19 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-08-11 12:13:23 +0000 |
commit | 868236886ad153a50b574b2d7379d3ab42e8ae98 (patch) | |
tree | 41abf7e0cbb6ee61eef532b922bb8670dc81f7fb /tests/auto | |
parent | 8d1851a39c846cd7d89e10c28f0e9d6e1d45d0c0 (diff) |
Utils::Environment: Extend autotest
... to cover the diff/apply mechanism.
Change-Id: I7d9e794792d6730e935c99c66062ea417dc65fe7
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/environment/tst_environment.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/auto/environment/tst_environment.cpp b/tests/auto/environment/tst_environment.cpp index d91e8800ed..71614400d6 100644 --- a/tests/auto/environment/tst_environment.cpp +++ b/tests/auto/environment/tst_environment.cpp @@ -60,6 +60,8 @@ private slots: void expansion_data(); void expansion(); + void incrementalChanges(); + void find_data(); void find(); @@ -276,6 +278,45 @@ void tst_Environment::expansion() QCOMPARE(env.expandedValueForKey("ew"), ew); } +void tst_Environment::incrementalChanges() +{ + const Environment origEnv({{"VAR1", "VALUE1"}, {"VAR2", "VALUE2"}, {"PATH", "/usr/bin"}}); + const NameValueItems changes({ + {"VAR1", QString(), NameValueItem::Unset}, + {"VAR2", "VALUE2", NameValueItem::SetDisabled}, + {"PATH", "/usr/local/bin", NameValueItem::Append}, + {"PATH", "/tmp", NameValueItem::Prepend}}); + + // Check values after change application. + Environment newEnv = origEnv; + newEnv.modify(changes); + QVERIFY(!newEnv.hasKey("VAR1")); + QCOMPARE(newEnv.value("VAR2"), QString()); + QCOMPARE(newEnv.constFind("VAR2")->first, "VALUE2"); + QVERIFY(!newEnv.isEnabled(newEnv.constFind("VAR2"))); + const QChar sep = HostOsInfo::pathListSeparator(); + QCOMPARE(newEnv.value("PATH"), + QString("/tmp").append(sep).append("/usr/bin").append(sep).append("/usr/local/bin")); + + // Check apply/diff round-trips. + const NameValueItems diff = origEnv.diff(newEnv); + const NameValueItems reverseDiff = newEnv.diff(origEnv); + Environment newEnv2 = origEnv; + newEnv2.modify(diff); + QCOMPARE(newEnv, newEnv2); + newEnv2.modify(reverseDiff); + QCOMPARE(newEnv2, origEnv); + + // Check conversion round-trips. + QCOMPARE(NameValueItem::fromStringList(NameValueItem::toStringList(changes)), changes); + QCOMPARE(NameValueItem::fromStringList(NameValueItem::toStringList(diff)), diff); + QCOMPARE(NameValueItem::fromStringList(NameValueItem::toStringList(reverseDiff)), reverseDiff); + QCOMPARE(NameValueItem::itemsFromVariantList(NameValueItem::toVariantList(changes)), changes); + QCOMPARE(NameValueItem::itemsFromVariantList(NameValueItem::toVariantList(diff)), diff); + QCOMPARE(NameValueItem::itemsFromVariantList(NameValueItem::toVariantList(reverseDiff)), + reverseDiff); +} + void tst_Environment::find_data() { QTest::addColumn<Utils::OsType>("osType"); |