Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit feb1d443 authored by Martin Flöser's avatar Martin Flöser

Try to make TestShellClient::testUnresponsiveWindow more robust

Summary:
When looking at the test results on build.kde.org we see this is the
test which fails most often and it's always at the same line of code.

So I just had a look with the thought: "what's special about this code,
why could it fail?"

Looking at it we start an external process which is supposed to connect
to KWin. We wait for the process to start and then wait for the shell
client added. This assumes that at the time we handle the wait for
started the connection of the window has not happened yet.

Waiting for the process in a blocking way, might make the process fail
to connect to the Wayland session, so this is changed to not block and
instead use a signal.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D17748
parent d49642ca
......@@ -982,11 +982,15 @@ void TestShellClient::testUnresponsiveWindow()
process->setProcessEnvironment(env);
process->setProcessChannelMode(QProcess::ForwardedChannels);
process->setProgram(kill);
QSignalSpy processStartedSpy{process.data(), &QProcess::started};
QVERIFY(processStartedSpy.isValid());
process->start();
QVERIFY(process->waitForStarted());
QVERIFY(processStartedSpy.wait());
AbstractClient *killClient = nullptr;
QVERIFY(shellClientAddedSpy.wait());
if (shellClientAddedSpy.isEmpty()) {
QVERIFY(shellClientAddedSpy.wait());
}
killClient = shellClientAddedSpy.first().first().value<AbstractClient*>();
QSignalSpy unresponsiveSpy(killClient, &AbstractClient::unresponsiveChanged);
QSignalSpy killedSpy(process.data(), static_cast<void(QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment