diff options
author | Christian Kandeler <[email protected]> | 2025-07-01 10:07:26 +0200 |
---|---|---|
committer | Christian Kandeler <[email protected]> | 2025-07-01 10:48:27 +0000 |
commit | 09cc750d14342c7ae330e90caf7e1f9f96efde06 (patch) | |
tree | 1bb9d6d1207f5ea523f047aa8edc83dcc142b3df | |
parent | 587f6ce4d1e4d0f6da49ca5b21a4232470676897 (diff) |
Change-Id: I4747694daffd31e4c9929425871c5d786762ab26
Reviewed-by: Christian Stenger <[email protected]>
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 1 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer_test.h | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectmanager.cpp | 119 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectmanager.h | 2 |
4 files changed, 68 insertions, 57 deletions
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 403363b026c..cdc86f34c65 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -819,6 +819,7 @@ Result<> ProjectExplorerPlugin::initialize(const QStringList &arguments) addTestCreator(createProjectTest); addTestCreator(createRunWorkerConflictTest); addTestCreator(createSanitizerOutputParserTest); + addTestCreator(createSessionTest); addTestCreator(createToolchainSettingsTest); addTestCreator(createUserFileAccessorTest); addTestCreator(createXcodebuildParserTest); diff --git a/src/plugins/projectexplorer/projectexplorer_test.h b/src/plugins/projectexplorer/projectexplorer_test.h index 19fd47a82b8..c3ddb0ac6d1 100644 --- a/src/plugins/projectexplorer/projectexplorer_test.h +++ b/src/plugins/projectexplorer/projectexplorer_test.h @@ -15,9 +15,6 @@ class ProjectExplorerTest final : public QObject { Q_OBJECT -private slots: - void testSessionSwitch(); - private: friend class ::ProjectExplorer::ProjectExplorerPlugin; }; diff --git a/src/plugins/projectexplorer/projectmanager.cpp b/src/plugins/projectexplorer/projectmanager.cpp index 65f7d3bfc82..0ae30204194 100644 --- a/src/plugins/projectexplorer/projectmanager.cpp +++ b/src/plugins/projectexplorer/projectmanager.cpp @@ -18,27 +18,20 @@ #include <coreplugin/foldernavigationwidget.h> #include <coreplugin/icore.h> #include <coreplugin/idocument.h> -#include <coreplugin/imode.h> #include <coreplugin/modemanager.h> -#include <coreplugin/progressmanager/progressmanager.h> #include <coreplugin/session.h> -#include <texteditor/texteditor.h> - #include <utils/algorithm.h> #include <utils/fileutils.h> #include <utils/mimeutils.h> #include <utils/persistentsettings.h> #include <utils/qtcassert.h> -#include <utils/stylehelper.h> #include <QDebug> #include <QMessageBox> #include <QPushButton> #ifdef WITH_TESTS -#include "projectexplorer_test.h" - #include <QTemporaryFile> #include <QTest> #include <vector> @@ -755,64 +748,82 @@ FilePaths ProjectManager::projectsForSessionName(const QString &session) } #ifdef WITH_TESTS - -void ProjectExplorerTest::testSessionSwitch() -{ - QVERIFY(SessionManager::createSession("session1")); - QVERIFY(SessionManager::createSession("session2")); - QTemporaryFile cppFile("main.cpp"); - QVERIFY(cppFile.open()); - cppFile.close(); - QTemporaryFile projectFile1("XXXXXX.pro"); - QTemporaryFile projectFile2("XXXXXX.pro"); - struct SessionSpec { - SessionSpec(const QString &n, QTemporaryFile &f) : name(n), projectFile(f) {} - const QString name; - QTemporaryFile &projectFile; - }; - std::vector<SessionSpec> sessionSpecs{SessionSpec("session1", projectFile1), - SessionSpec("session2", projectFile2)}; - for (const SessionSpec &sessionSpec : sessionSpecs) { - static const QByteArray proFileContents +namespace Internal { + +class SessionTest : public QObject { + Q_OBJECT + +private slots: + + void testSessionSwitch() + { + QVERIFY(SessionManager::createSession("session1")); + QVERIFY(SessionManager::createSession("session2")); + QTemporaryFile cppFile("main.cpp"); + QVERIFY(cppFile.open()); + cppFile.close(); + QTemporaryFile projectFile1("XXXXXX.pro"); + QTemporaryFile projectFile2("XXXXXX.pro"); + struct SessionSpec { + SessionSpec(const QString &n, QTemporaryFile &f) : name(n), projectFile(f) {} + const QString name; + QTemporaryFile &projectFile; + }; + std::vector<SessionSpec> sessionSpecs{SessionSpec("session1", projectFile1), + SessionSpec("session2", projectFile2)}; + for (const SessionSpec &sessionSpec : sessionSpecs) { + static const QByteArray proFileContents = "TEMPLATE = app\n" "CONFIG -= qt\n" "SOURCES = " + cppFile.fileName().toLocal8Bit(); - QVERIFY(sessionSpec.projectFile.open()); - sessionSpec.projectFile.write(proFileContents); - sessionSpec.projectFile.close(); - QVERIFY(SessionManager::loadSession(sessionSpec.name)); - const OpenProjectResult openResult + QVERIFY(sessionSpec.projectFile.open()); + sessionSpec.projectFile.write(proFileContents); + sessionSpec.projectFile.close(); + QVERIFY(SessionManager::loadSession(sessionSpec.name)); + const OpenProjectResult openResult = ProjectExplorerPlugin::openProject( FilePath::fromString(sessionSpec.projectFile.fileName())); - if (!ProjectManager::canOpenProjectForMimeType( - Utils::mimeTypeForFile(sessionSpec.projectFile.fileName()))) { - QEXPECT_FAIL( - nullptr, - "This test requires the presence of QmakeProjectManager to be fully functional. " - "Hint: run this test with \"-load QmakeProjectManager\" option.", - Abort); + if (!ProjectManager::canOpenProjectForMimeType( + Utils::mimeTypeForFile(sessionSpec.projectFile.fileName()))) { + QEXPECT_FAIL( + nullptr, + "This test requires the presence of QmakeProjectManager to be fully functional. " + "Hint: run this test with \"-load QmakeProjectManager\" option.", + Abort); + } + QVERIFY2(openResult, qPrintable(openResult.errorMessage())); + QCOMPARE(openResult.projects().count(), 1); + QVERIFY(openResult.project()); + QCOMPARE(ProjectManager::projects().count(), 1); + } + for (int i = 0; i < 30; ++i) { + QVERIFY(SessionManager::loadSession("session1")); + QCOMPARE(SessionManager::activeSession(), "session1"); + QCOMPARE(ProjectManager::projects().count(), 1); + QVERIFY(SessionManager::loadSession("session2")); + QCOMPARE(SessionManager::activeSession(), "session2"); + QCOMPARE(ProjectManager::projects().count(), 1); } - QVERIFY2(openResult, qPrintable(openResult.errorMessage())); - QCOMPARE(openResult.projects().count(), 1); - QVERIFY(openResult.project()); - QCOMPARE(ProjectManager::projects().count(), 1); - } - for (int i = 0; i < 30; ++i) { QVERIFY(SessionManager::loadSession("session1")); - QCOMPARE(SessionManager::activeSession(), "session1"); - QCOMPARE(ProjectManager::projects().count(), 1); + ProjectManager::closeAllProjects(); QVERIFY(SessionManager::loadSession("session2")); - QCOMPARE(SessionManager::activeSession(), "session2"); - QCOMPARE(ProjectManager::projects().count(), 1); + ProjectManager::closeAllProjects(); + QVERIFY(SessionManager::deleteSession("session1")); + QVERIFY(SessionManager::deleteSession("session2")); } - QVERIFY(SessionManager::loadSession("session1")); - ProjectManager::closeAllProjects(); - QVERIFY(SessionManager::loadSession("session2")); - ProjectManager::closeAllProjects(); - QVERIFY(SessionManager::deleteSession("session1")); - QVERIFY(SessionManager::deleteSession("session2")); +}; + +QObject *createSessionTest() +{ + return new SessionTest; } +} // namespace Internal + #endif // WITH_TESTS } // namespace ProjectExplorer + +#ifdef WITH_TESTS +#include <projectmanager.moc> +#endif diff --git a/src/plugins/projectexplorer/projectmanager.h b/src/plugins/projectexplorer/projectmanager.h index d68d70b0a98..114ee70df93 100644 --- a/src/plugins/projectexplorer/projectmanager.h +++ b/src/plugins/projectexplorer/projectmanager.h @@ -138,4 +138,6 @@ private: const IssuesGenerator &issuesGenerator); }; +namespace Internal { QObject *createSessionTest(); } + } // namespace ProjectExplorer |