diff --git a/src/plugins/clangcodemodel/test/clangbatchfileprocessor.cpp b/src/plugins/clangcodemodel/test/clangbatchfileprocessor.cpp index 25d22bb1c1b..8556c84b4b0 100644 --- a/src/plugins/clangcodemodel/test/clangbatchfileprocessor.cpp +++ b/src/plugins/clangcodemodel/test/clangbatchfileprocessor.cpp @@ -237,7 +237,7 @@ bool OpenProjectCommand::run() Project *project = openProjectSucceeded.project(); project->configureAsExampleProject(); - return CppTools::Tests::TestCase::waitUntilCppModelManagerIsAwareOf(project, timeOutInMs()); + return CppTools::Tests::TestCase::waitUntilProjectIsFullyOpened(project, timeOutInMs()); } Command::Ptr OpenProjectCommand::parse(BatchFileLineTokenizer &arguments, diff --git a/src/plugins/cpptools/cpptoolstestcase.cpp b/src/plugins/cpptools/cpptoolstestcase.cpp index b9ba701aebb..8040e3f811f 100644 --- a/src/plugins/cpptools/cpptoolstestcase.cpp +++ b/src/plugins/cpptools/cpptoolstestcase.cpp @@ -226,22 +226,17 @@ QList TestCase::waitForFilesInGlobalSnapshot(const QSt return result; } -bool TestCase::waitUntilCppModelManagerIsAwareOf(Project *project, int timeOutInMs) +bool TestCase::waitUntilProjectIsFullyOpened(Project *project, int timeOutInMs) { if (!project) return false; - QElapsedTimer t; - t.start(); - - CppModelManager *modelManager = CppModelManager::instance(); - forever { - if (modelManager->projectInfo(project).isValid()) - return true; - if (t.elapsed() > timeOutInMs) - return false; - QCoreApplication::processEvents(); - } + return QTest::qWaitFor( + [project]() { + return !project->isParsing() + && CppModelManager::instance()->projectInfo(project).isValid(); + }, + timeOutInMs); } bool TestCase::writeFile(const QString &filePath, const QByteArray &contents) @@ -293,7 +288,7 @@ ProjectInfo ProjectOpenerAndCloser::open(const QString &projectFile, bool config if (configureAsExampleProject) project->configureAsExampleProject(); - if (TestCase::waitUntilCppModelManagerIsAwareOf(project)) { + if (TestCase::waitUntilProjectIsFullyOpened(project)) { m_openProjects.append(project); return CppModelManager::instance()->projectInfo(project); } diff --git a/src/plugins/cpptools/cpptoolstestcase.h b/src/plugins/cpptools/cpptoolstestcase.h index 009a5a9c3ed..d6e306d255f 100644 --- a/src/plugins/cpptools/cpptoolstestcase.h +++ b/src/plugins/cpptools/cpptoolstestcase.h @@ -92,9 +92,8 @@ public: static bool waitForProcessedEditorDocument(const QString &filePath, int timeOutInMs = 5000); enum { defaultTimeOutInMs = 30 * 1000 /*= 30 secs*/ }; - static bool waitUntilCppModelManagerIsAwareOf( - ProjectExplorer::Project *project, - int timeOutInMs = defaultTimeOutInMs); + static bool waitUntilProjectIsFullyOpened(ProjectExplorer::Project *project, + int timeOutInMs = defaultTimeOutInMs); static CPlusPlus::Document::Ptr waitForFileInGlobalSnapshot( const QString &filePath, int timeOutInMs = defaultTimeOutInMs);