<table><tr><td style="">mwolff added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D16326">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
color: #6B748C;
font-style: italic;
margin: 4px 0 12px 0;
padding: 8px 12px;
background-color: #F8F9FC;">
<div style="font-style: normal;
padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D16326#346194" style="background-color: #e7e7e7;
border-color: #e7e7e7;
border-radius: 3px;
padding: 0 4px;
font-weight: bold;
color: black;text-decoration: none;">D16326#346194</a>, <a href="https://phabricator.kde.org/p/amhndu/" style="
border-color: #f1f7ff;
color: #19558d;
background-color: #f1f7ff;
border: 1px solid transparent;
border-radius: 3px;
font-weight: bold;
padding: 0 4px;">@amhndu</a> wrote:</div>
<div style="margin: 0;
padding: 0;
border: 0;
color: rgb(107, 116, 140);"><p>Added tests in testCompleteFunction, which already has some implements-completion<br />
tests. Should I move them to a different test, something like testImplementExecute<br />
in a different patch or this one ?</p>
<p>Completion tests are also broken, crashing after executing a single test case<br />
because of a delayed connection, triggering the slot only after the document is closed.<br />
As a workaround, I've used</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="diff" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"><span style="color: #000080">diff --git a/plugins/clang/tests/codecompletiontestbase.cpp b/plugins/clang/tests/codecompletiontestbase.cpp</span>
<span style="color: #000080">index 5b351d0d27..282f7da36e 100644</span>
<span style="color: #a00000">--- a/plugins/clang/tests/codecompletiontestbase.cpp</span>
<span style="color: #00a000">+++ b/plugins/clang/tests/codecompletiontestbase.cpp</span>
<span style="color: #800080">@@ -70,6 +70,7 @@ void CodeCompletionTestBase::initTestCase()</span>
m_projectController = new TestProjectController(core);
core->setProjectController(m_projectController);
ICore::self()->documentController()->closeAllDocuments();
<span style="color: #00a000">+ QObject::disconnect(ICore::self()->documentController(), nullptr, nullptr, nullptr);</span>
ClangSettingsManager::self()->m_enableTesting = true;
}</pre></div>
<p>Which still has a crash, but only at the very end after executing everything.</p></div>
</blockquote>
<p>I've fixed both issues with:</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">commit 8f9f8d1c4452f8d9291ae530f3720511fd203aef
Author: Milian Wolff <mail@milianw.de>
Date: Sun Oct 21 20:12:37 2018 +0200
Fix crashes when document gets destroyed directly after load
This fixes the clang code completion unit test, which used to
crash on exit since the event loop wasn't run between loading
a document and destroying it again.
To guard against this, we need to jump through a QPointer hoop,
which requires some lambda boiler plate but otherwise isn't too bad.</pre></div>
<p>This should work for all unit tests and doesn't require such a hackish disconnect.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R32 KDevelop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D16326">https://phabricator.kde.org/D16326</a></div></div><br /><div><strong>To: </strong>amhndu, KDevelop, mwolff<br /><strong>Cc: </strong>mwolff, apol, kdevelop-devel, glebaccon, antismap, iodelay, vbspam, geetamc, Pilzschaf, akshaydeo, surgenight, arrowd<br /></div>