Fix testlib/tst_selftests::keyboard on Wayland

Wayland does not support WindowActivation capability, which
will trigger a warning in qWaitForWindowActive(). Since the
selftests depend on matching the exact output of the tests,
it gets confused by this, even though the tests are passing.

So we suppress the warning when the capability is not
supported.

Change-Id: I1e1f530a7b237183ee4ef123618e868b746ba863
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Eskil Abrahamsen Blomfeldt 2021-02-25 12:04:09 +01:00
parent bc1f61d010
commit a6cdf41310

View File

@ -28,6 +28,8 @@
#include <QtTest/qtest.h>
#include <QtGui/qwindow.h>
#include <QtGui/private/qguiapplication_p.h>
#include <QtGui/qpa/qplatformintegration.h>
class tst_Keyboard : public QObject
{
@ -63,6 +65,15 @@ void tst_Keyboard::keyPressAndRelease()
window.show();
window.setGeometry(100, 100, 200, 200);
QVERIFY(QTest::qWaitForWindowExposed(&window));
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) {
QTest::ignoreMessage(QtWarningMsg,
"qWaitForWindowActive was called on a platform that doesn't support window "
"activation. This means there is an error in the test and it should either "
"check for the WindowActivation platform capability before calling "
"qWaitForWindowActivate, use qWaitForWindowExposed instead, or skip the test. "
"Falling back to qWaitForWindowExposed.");
}
QVERIFY(QTest::qWaitForWindowActive(&window));
QTest::keyPress(&window, Qt::Key_A);