diff --git a/kdevplatform/tests/testfile.cpp b/kdevplatform/tests/testfile.cpp --- a/kdevplatform/tests/testfile.cpp +++ b/kdevplatform/tests/testfile.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -123,6 +124,25 @@ TestFile::~TestFile() { + IDocument* document = ICore::self()->documentController()->documentForUrl(d->url.toUrl()); + if (document) { + document->close(KDevelop::IDocument::Discard); + } + + auto backgroundParser = ICore::self()->languageController()->backgroundParser(); + backgroundParser->removeDocument(d->url, this); + if (backgroundParser->parseJobForDocument(d->url)) { + bool finished = false; + connect(backgroundParser, &BackgroundParser::parseJobFinished, this, [this, &finished](KDevelop::ParseJob* job) { + if (job->document() == d->url) { + finished = true; + } + }); + if (backgroundParser->parseJobForDocument(d->url)) { + QTRY_VERIFY(finished); + } + } + if (d->topContext && !d->keepDUChainData) { DUChainWriteLocker lock; DUChain::self()->removeDocumentChain(d->topContext.data());