diff options
Diffstat (limited to 'src/plugins/cpptools/cpptoolstestcase.h')
-rw-r--r-- | src/plugins/cpptools/cpptoolstestcase.h | 19 |
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: |