aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-07-17 08:59:19 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2020-08-11 12:13:23 +0000
commit868236886ad153a50b574b2d7379d3ab42e8ae98 (patch)
tree41abf7e0cbb6ee61eef532b922bb8670dc81f7fb /tests/auto
parent8d1851a39c846cd7d89e10c28f0e9d6e1d45d0c0 (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.cpp41
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");