aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <[email protected]>2025-07-01 10:07:26 +0200
committerChristian Kandeler <[email protected]>2025-07-01 10:48:27 +0000
commit09cc750d14342c7ae330e90caf7e1f9f96efde06 (patch)
tree1bb9d6d1207f5ea523f047aa8edc83dcc142b3df
parent587f6ce4d1e4d0f6da49ca5b21a4232470676897 (diff)
ProjectExplorer: Move session test into dedicated classHEADmaster
Change-Id: I4747694daffd31e4c9929425871c5d786762ab26 Reviewed-by: Christian Stenger <[email protected]>
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp1
-rw-r--r--src/plugins/projectexplorer/projectexplorer_test.h3
-rw-r--r--src/plugins/projectexplorer/projectmanager.cpp119
-rw-r--r--src/plugins/projectexplorer/projectmanager.h2
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