summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolstestcase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cpptoolstestcase.cpp')
-rw-r--r--src/plugins/cpptools/cpptoolstestcase.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cpptoolstestcase.cpp b/src/plugins/cpptools/cpptoolstestcase.cpp
index 8d2a3684a0..8cd7953320 100644
--- a/src/plugins/cpptools/cpptoolstestcase.cpp
+++ b/src/plugins/cpptools/cpptoolstestcase.cpp
@@ -29,6 +29,10 @@
****************************************************************************/
#include "cpptoolstestcase.h"
+
+#include "baseeditordocumentparser.h"
+#include "baseeditordocumentprocessor.h"
+#include "editordocumenthandle.h"
#include "cppmodelmanager.h"
#include "cppworkingcopy.h"
@@ -140,6 +144,31 @@ bool TestCase::garbageCollectGlobalSnapshot()
return globalSnapshot().isEmpty();
}
+static bool waitForProcessedEditorDocument_internal(CppEditorDocumentHandle *editorDocument,
+ int timeOutInMs)
+{
+ QTC_ASSERT(editorDocument, return false);
+
+ QTime timer;
+ timer.start();
+
+ forever {
+ if (!editorDocument->processor()->isParserRunning())
+ return true;
+ if (timer.elapsed() > timeOutInMs)
+ return false;
+
+ QCoreApplication::processEvents();
+ QThread::msleep(20);
+ }
+}
+
+bool TestCase::waitForProcessedEditorDocument(const QString &filePath, int timeOutInMs)
+{
+ auto *editorDocument = CppModelManager::instance()->cppEditorDocument(filePath);
+ return waitForProcessedEditorDocument_internal(editorDocument, timeOutInMs);
+}
+
bool TestCase::parseFiles(const QSet<QString> &filePaths)
{
CppModelManager::instance()->updateSourceFiles(filePaths).waitForFinished();