CppEditor/CppTools: Avoid triggering garbage collector on editor close in tests

Closing an editor might trigger a timer which leads to the invocation of
the garbage collector. This is unfavourable for the plugin tests since a
test function closing an editor might influence a subsequent test
function (e.g. files get removed from the global snapshot although they
were added shortly before).

Change-Id: Ia80c11f99e2437fe145dc2d983b21962539b5181
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Nikolai Kosjar
2013-12-17 13:54:52 +01:00
parent 0bd5917867
commit 746da71527
7 changed files with 30 additions and 4 deletions

View File

@@ -36,6 +36,14 @@
#include <QtTest>
static bool closeEditorsWithoutGarbageCollectorInvocation(const QList<Core::IEditor *> &editors)
{
CppTools::CppModelManagerInterface::instance()->enableGarbageCollector(false);
const bool closeEditorsSucceeded = Core::EditorManager::closeEditors(editors, false);
CppTools::CppModelManagerInterface::instance()->enableGarbageCollector(true);
return closeEditorsSucceeded;
}
static bool snapshotContains(const CPlusPlus::Snapshot &snapshot, const QStringList &filePaths)
{
foreach (const QString &filePath, filePaths) {
@@ -80,7 +88,7 @@ TestCase::TestCase(bool runGarbageCollector)
TestCase::~TestCase()
{
QVERIFY(Core::EditorManager::closeEditors(m_editorsToClose, false));
QVERIFY(closeEditorsWithoutGarbageCollectorInvocation(m_editorsToClose));
QCoreApplication::processEvents();
if (m_runGarbageCollector)
@@ -130,6 +138,11 @@ void TestCase::closeEditorAtEndOfTestCase(Core::IEditor *editor)
m_editorsToClose.append(editor);
}
bool TestCase::closeEditorWithoutGarbageCollectorInvocation(Core::IEditor *editor)
{
return closeEditorsWithoutGarbageCollectorInvocation(QList<Core::IEditor *>() << editor);
}
CPlusPlus::Document::Ptr TestCase::waitForFileInGlobalSnapshot(const QString &filePath)
{
return waitForFilesInGlobalSnapshot(QStringList(filePath)).first();