diff options
author | Christian Kandeler <[email protected]> | 2025-06-30 15:31:04 +0200 |
---|---|---|
committer | Christian Kandeler <[email protected]> | 2025-07-01 07:53:52 +0000 |
commit | b4880582c255653c5273aa78065649fd98c81ec2 (patch) | |
tree | 3918eaec15aa0df2538183832cb0de06f8f3ef37 | |
parent | 0c45ab6f46b60e3e0ff9bb6f91f3cd94df8f979d (diff) |
Change-Id: I7bf57c74f0eea2f457d18ba36eda65a29641e019
Reviewed-by: Christian Stenger <[email protected]>
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer_test.h | 6 | ||||
-rw-r--r-- | src/plugins/projectexplorer/userfileaccessor.cpp | 267 | ||||
-rw-r--r-- | src/plugins/projectexplorer/userfileaccessor.h | 2 |
4 files changed, 139 insertions, 140 deletions
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index f44231fd013..403363b026c 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -171,8 +171,9 @@ #include "outputparser_test.h" #include "projectexplorer_test.h" #include "toolchainsettingsaccessor.h" +#include "userfileaccessor.h" #include "xcodebuildparser.h" -#endif +#endif // WITH_TESTS /*! \namespace ProjectExplorer @@ -819,6 +820,7 @@ Result<> ProjectExplorerPlugin::initialize(const QStringList &arguments) addTestCreator(createRunWorkerConflictTest); addTestCreator(createSanitizerOutputParserTest); addTestCreator(createToolchainSettingsTest); + addTestCreator(createUserFileAccessorTest); addTestCreator(createXcodebuildParserTest); #endif diff --git a/src/plugins/projectexplorer/projectexplorer_test.h b/src/plugins/projectexplorer/projectexplorer_test.h index b4892e0f6ef..19fd47a82b8 100644 --- a/src/plugins/projectexplorer/projectexplorer_test.h +++ b/src/plugins/projectexplorer/projectexplorer_test.h @@ -16,12 +16,6 @@ class ProjectExplorerTest final : public QObject Q_OBJECT private slots: - void testUserFileAccessor_prepareToReadSettings(); - void testUserFileAccessor_prepareToWriteSettings(); - void testUserFileAccessor_mergeSettings(); - void testUserFileAccessor_mergeSettingsEmptyUser(); - void testUserFileAccessor_mergeSettingsEmptyShared(); - void testSessionSwitch(); private: diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index 21260e36301..4264b8adea3 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -14,11 +14,13 @@ #include <QGuiApplication> #include <QRegularExpression> +#ifdef WITH_TESTS +#include <QTest> +#endif using namespace Utils; -using namespace ProjectExplorer; -using namespace ProjectExplorer::Internal; +namespace ProjectExplorer::Internal { using KeyVariantPair = std::pair<const Key, QVariant>; static QString userFileExtension() @@ -31,8 +33,6 @@ static QString userFileExtension() return ".user"; } -namespace { - const char SHARED_SETTINGS[] = "SharedSettings"; const char USER_STICKY_KEYS_KEY[] = "UserStickyKeys"; @@ -83,14 +83,10 @@ public: static QVariant process(const QVariant &entry); }; -} // namespace - // -------------------------------------------------------------------- // Helpers: // -------------------------------------------------------------------- -namespace { - static QString generateSuffix(const QString &suffix) { QString result = suffix; @@ -128,8 +124,6 @@ static QString makeRelative(QString path) return path; } -} // namespace - // -------------------------------------------------------------------- // UserFileAccessor: // -------------------------------------------------------------------- @@ -453,13 +447,6 @@ QVariant UserFileVersion21Upgrader::process(const QVariant &entry) } #ifdef WITH_TESTS - -#include <QTest> - -#include "projectexplorer_test.h" - -namespace { - class TestUserFileAccessor : public UserFileAccessor { public: @@ -477,8 +464,7 @@ private: mutable Store m_storedSettings; }; - -class TestBuildSystem : public BuildSystem +class UserFileAccesorTestBuildSystem : public BuildSystem { public: using BuildSystem::BuildSystem; @@ -486,142 +472,157 @@ private: void triggerParsing() override {} }; -class TestProject : public Project +class UserFileAccessorTestProject : public Project { public: - TestProject() : Project("x-test/testproject", "/test/project") + UserFileAccessorTestProject() : Project("x-test/testproject", "/test/project") { setDisplayName("Test Project"); - setBuildSystemCreator<TestBuildSystem>("UserFileAccessorTest"); + setBuildSystemCreator<UserFileAccesorTestBuildSystem>("UserFileAccessorTest"); } bool needsConfiguration() const final { return false; } }; -} // namespace - -void ProjectExplorerTest::testUserFileAccessor_prepareToReadSettings() +class UserFileAccessorTest : public QObject { - TestProject project; - TestUserFileAccessor accessor(&project); + Q_OBJECT - Store data; - data.insert("Version", 4); - data.insert("Foo", "bar"); +private slots: + void testPrepareToReadSettings() + { + UserFileAccessorTestProject project; + TestUserFileAccessor accessor(&project); - Store result = accessor.preprocessReadSettings(data); + Store data; + data.insert("Version", 4); + data.insert("Foo", "bar"); - QCOMPARE(result, data); -} + Store result = accessor.preprocessReadSettings(data); -void ProjectExplorerTest::testUserFileAccessor_prepareToWriteSettings() -{ - TestProject project; - TestUserFileAccessor accessor(&project); - - Store sharedData; - sharedData.insert("Version", 10); - sharedData.insert("shared1", "bar"); - sharedData.insert("shared2", "baz"); - sharedData.insert("shared3", "foo"); - - accessor.storeSharedSettings(sharedData); - - Store data; - data.insert("Version", 10); - data.insert("shared1", "bar1"); - data.insert("unique1", 1234); - data.insert("shared3", "foo"); - Store result = accessor.prepareToWriteSettings(data); - - QCOMPARE(result.count(), data.count() + 2); - QCOMPARE(result.value("EnvironmentId").toByteArray(), - projectExplorerSettings().environmentId.toByteArray()); - QCOMPARE(result.value("UserStickyKeys"), QVariant(QStringList({"shared1"}))); - QCOMPARE(result.value("Version").toInt(), accessor.currentVersion()); - QCOMPARE(result.value("shared1"), data.value("shared1")); - QCOMPARE(result.value("shared3"), data.value("shared3")); - QCOMPARE(result.value("unique1"), data.value("unique1")); -} + QCOMPARE(result, data); + } -void ProjectExplorerTest::testUserFileAccessor_mergeSettings() -{ - TestProject project; - TestUserFileAccessor accessor(&project); - - Store sharedData; - sharedData.insert("Version", accessor.currentVersion()); - sharedData.insert("shared1", "bar"); - sharedData.insert("shared2", "baz"); - sharedData.insert("shared3", "foooo"); - TestUserFileAccessor::RestoreData shared("/shared/data", sharedData); - - Store data; - data.insert("Version", accessor.currentVersion()); - data.insert("EnvironmentId", projectExplorerSettings().environmentId.toByteArray()); - data.insert("UserStickyKeys", QStringList({"shared1"})); - data.insert("shared1", "bar1"); - data.insert("unique1", 1234); - data.insert("shared3", "foo"); - TestUserFileAccessor::RestoreData user("/user/data", data); - TestUserFileAccessor::RestoreData result = accessor.mergeSettings(user, shared); - - QVERIFY(!result.hasIssue()); - QCOMPARE(result.data.count(), data.count() + 1); - // mergeSettings does not run updateSettings, so no OriginalVersion will be set - QCOMPARE(result.data.value("EnvironmentId").toByteArray(), - projectExplorerSettings().environmentId.toByteArray()); // unchanged - QCOMPARE(result.data.value("UserStickyKeys"), QVariant(QStringList({"shared1"}))); // unchanged - QCOMPARE(result.data.value("Version").toInt(), accessor.currentVersion()); // forced - QCOMPARE(result.data.value("shared1"), data.value("shared1")); // from data - QCOMPARE(result.data.value("shared2"), sharedData.value("shared2")); // from shared, missing! - QCOMPARE(result.data.value("shared3"), sharedData.value("shared3")); // from shared - QCOMPARE(result.data.value("unique1"), data.value("unique1")); -} + void testPrepareToWriteSettings() + { + UserFileAccessorTestProject project; + TestUserFileAccessor accessor(&project); + + Store sharedData; + sharedData.insert("Version", 10); + sharedData.insert("shared1", "bar"); + sharedData.insert("shared2", "baz"); + sharedData.insert("shared3", "foo"); + + accessor.storeSharedSettings(sharedData); + + Store data; + data.insert("Version", 10); + data.insert("shared1", "bar1"); + data.insert("unique1", 1234); + data.insert("shared3", "foo"); + Store result = accessor.prepareToWriteSettings(data); + + QCOMPARE(result.count(), data.count() + 2); + QCOMPARE(result.value("EnvironmentId").toByteArray(), + projectExplorerSettings().environmentId.toByteArray()); + QCOMPARE(result.value("UserStickyKeys"), QVariant(QStringList({"shared1"}))); + QCOMPARE(result.value("Version").toInt(), accessor.currentVersion()); + QCOMPARE(result.value("shared1"), data.value("shared1")); + QCOMPARE(result.value("shared3"), data.value("shared3")); + QCOMPARE(result.value("unique1"), data.value("unique1")); + } -void ProjectExplorerTest::testUserFileAccessor_mergeSettingsEmptyUser() -{ - TestProject project; - TestUserFileAccessor accessor(&project); + void testMergeSettings() + { + UserFileAccessorTestProject project; + TestUserFileAccessor accessor(&project); + + Store sharedData; + sharedData.insert("Version", accessor.currentVersion()); + sharedData.insert("shared1", "bar"); + sharedData.insert("shared2", "baz"); + sharedData.insert("shared3", "foooo"); + TestUserFileAccessor::RestoreData shared("/shared/data", sharedData); + + Store data; + data.insert("Version", accessor.currentVersion()); + data.insert("EnvironmentId", projectExplorerSettings().environmentId.toByteArray()); + data.insert("UserStickyKeys", QStringList({"shared1"})); + data.insert("shared1", "bar1"); + data.insert("unique1", 1234); + data.insert("shared3", "foo"); + TestUserFileAccessor::RestoreData user("/user/data", data); + TestUserFileAccessor::RestoreData result = accessor.mergeSettings(user, shared); + + QVERIFY(!result.hasIssue()); + QCOMPARE(result.data.count(), data.count() + 1); + // mergeSettings does not run updateSettings, so no OriginalVersion will be set + QCOMPARE(result.data.value("EnvironmentId").toByteArray(), + projectExplorerSettings().environmentId.toByteArray()); // unchanged + QCOMPARE(result.data.value("UserStickyKeys"), QVariant(QStringList({"shared1"}))); // unchanged + QCOMPARE(result.data.value("Version").toInt(), accessor.currentVersion()); // forced + QCOMPARE(result.data.value("shared1"), data.value("shared1")); // from data + QCOMPARE(result.data.value("shared2"), sharedData.value("shared2")); // from shared, missing! + QCOMPARE(result.data.value("shared3"), sharedData.value("shared3")); // from shared + QCOMPARE(result.data.value("unique1"), data.value("unique1")); + } - Store sharedData; - sharedData.insert("Version", accessor.currentVersion()); - sharedData.insert("shared1", "bar"); - sharedData.insert("shared2", "baz"); - sharedData.insert("shared3", "foooo"); - TestUserFileAccessor::RestoreData shared("/shared/data", sharedData); + void testMergeSettingsEmptyUser() + { + UserFileAccessorTestProject project; + TestUserFileAccessor accessor(&project); - Store data; - TestUserFileAccessor::RestoreData user("/shared/data", data); + Store sharedData; + sharedData.insert("Version", accessor.currentVersion()); + sharedData.insert("shared1", "bar"); + sharedData.insert("shared2", "baz"); + sharedData.insert("shared3", "foooo"); + TestUserFileAccessor::RestoreData shared("/shared/data", sharedData); - TestUserFileAccessor::RestoreData result = accessor.mergeSettings(user, shared); + Store data; + TestUserFileAccessor::RestoreData user("/shared/data", data); - QVERIFY(!result.hasIssue()); - QCOMPARE(result.data, sharedData); -} + TestUserFileAccessor::RestoreData result = accessor.mergeSettings(user, shared); -void ProjectExplorerTest::testUserFileAccessor_mergeSettingsEmptyShared() + QVERIFY(!result.hasIssue()); + QCOMPARE(result.data, sharedData); + } + + void testMergeSettingsEmptyShared() + { + UserFileAccessorTestProject project; + TestUserFileAccessor accessor(&project); + + Store sharedData; + TestUserFileAccessor::RestoreData shared("/shared/data", sharedData); + + Store data; + data.insert("Version", accessor.currentVersion()); + data.insert("OriginalVersion", accessor.currentVersion()); + data.insert("EnvironmentId", projectExplorerSettings().environmentId.toByteArray()); + data.insert("UserStickyKeys", QStringList({"shared1"})); + data.insert("shared1", "bar1"); + data.insert("unique1", 1234); + data.insert("shared3", "foo"); + TestUserFileAccessor::RestoreData user("/shared/data", data); + + TestUserFileAccessor::RestoreData result = accessor.mergeSettings(user, shared); + + QVERIFY(!result.hasIssue()); + QCOMPARE(result.data, data); + } +}; + +QObject *createUserFileAccessorTest() { - TestProject project; - TestUserFileAccessor accessor(&project); - - Store sharedData; - TestUserFileAccessor::RestoreData shared("/shared/data", sharedData); - - Store data; - data.insert("Version", accessor.currentVersion()); - data.insert("OriginalVersion", accessor.currentVersion()); - data.insert("EnvironmentId", projectExplorerSettings().environmentId.toByteArray()); - data.insert("UserStickyKeys", QStringList({"shared1"})); - data.insert("shared1", "bar1"); - data.insert("unique1", 1234); - data.insert("shared3", "foo"); - TestUserFileAccessor::RestoreData user("/shared/data", data); - - TestUserFileAccessor::RestoreData result = accessor.mergeSettings(user, shared); - - QVERIFY(!result.hasIssue()); - QCOMPARE(result.data, data); + return new UserFileAccessorTest; } #endif // WITH_TESTS + +} // namespace Internal + +#ifdef WITH_TESTS +#include <userfileaccessor.moc> +#endif diff --git a/src/plugins/projectexplorer/userfileaccessor.h b/src/plugins/projectexplorer/userfileaccessor.h index 2efeba8b0f9..aba225b5158 100644 --- a/src/plugins/projectexplorer/userfileaccessor.h +++ b/src/plugins/projectexplorer/userfileaccessor.h @@ -43,5 +43,7 @@ private: Project *m_project; }; +QObject *createUserFileAccessorTest(); + } // namespace Internal } // namespace ProjectExplorer |