summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolstestcase.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cpptoolstestcase.h')
-rw-r--r--src/plugins/cpptools/cpptoolstestcase.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cpptoolstestcase.h b/src/plugins/cpptools/cpptoolstestcase.h
index aaa94f1e07..08ae5b7c70 100644
--- a/src/plugins/cpptools/cpptoolstestcase.h
+++ b/src/plugins/cpptools/cpptoolstestcase.h
@@ -30,7 +30,9 @@
#include <cplusplus/CppDocument.h>
#include <utils/temporarydirectory.h>
+#include <QEventLoop>
#include <QStringList>
+#include <QTimer>
namespace CPlusPlus {
class Document;
@@ -54,6 +56,23 @@ class ProjectInfo;
namespace Tests {
+int CPPTOOLS_EXPORT clangdIndexingTimeout();
+
+template <typename Signal> inline bool waitForSignalOrTimeout(
+ const typename QtPrivate::FunctionPointer<Signal>::Object *sender, Signal signal,
+ int timeoutInMs)
+{
+ QTimer timer;
+ timer.setSingleShot(true);
+ timer.setInterval(timeoutInMs);
+ QEventLoop loop;
+ QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
+ QObject::connect(sender, signal, &loop, &QEventLoop::quit);
+ timer.start();
+ loop.exec();
+ return timer.isActive();
+}
+
class CPPTOOLS_EXPORT TestDocument
{
public: