[autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb

The X11 specific tests need to run on QT_QPA_PLATFORM xcb otherwise
they will crash. To enforce this without having to replace QTEST_MAIN
a Q_CONSTRUCTOR_FUNCTION is used to invoke a function which does nothing
except setting the env variable.
This commit is contained in:
Martin Gräßlin 2016-09-08 15:08:45 +02:00
parent 66c61adb6d
commit d345878b52
10 changed files with 20 additions and 0 deletions

View file

@ -21,6 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <QLoggingCategory>
#include <QX11Info>
#include "../testutils.h"
#include "../../libkwineffects/kwinxrenderutils.h"
class BlendPictureTest : public QObject
@ -55,5 +56,6 @@ void BlendPictureTest::testDontCrashOnTeardown()
Q_UNUSED(picture2)
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(BlendPictureTest)
#include "blendpicture_test.moc"

View file

@ -20,6 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "test_tabbox_clientmodel.h"
#include "mock_tabboxhandler.h"
#include "clientmodel.h"
#include "../testutils.h"
#include <QtTest/QtTest>
#include <QX11Info>
@ -89,4 +90,5 @@ void TestTabBoxClientModel::testCreateClientListActiveClientNotInFocusChain()
QCOMPARE(clientModel->rowCount(), 1);
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(TestTabBoxClientModel)

View file

@ -19,6 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
#include "mock_tabboxhandler.h"
#include "clientmodel.h"
#include "../testutils.h"
#include <QtTest/QtTest>
#include <QX11Info>
@ -56,6 +57,7 @@ void TestTabBoxHandler::testDontCrashUpdateOutlineNullClient()
tabboxhandler.show();
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(TestTabBoxHandler)
#include "test_tabbox_handler.moc"

View file

@ -21,6 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "../effects/effect_builtins.h"
#include "mock_effectshandler.h"
#include "../scripting/scriptedeffect.h" // for mocking ScriptedEffect::create
#include "testutils.h"
// KDE
#include <KConfig>
#include <KConfigGroup>
@ -563,5 +564,6 @@ void TestBuiltInEffectLoader::testLoadAllEffects()
QCOMPARE(loadedEffects.at(1), QStringLiteral("mouseclick"));
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(TestBuiltInEffectLoader)
#include "test_builtin_effectloader.moc"

View file

@ -151,5 +151,6 @@ void TestClientMachine::emptyHostName()
QCOMPARE(spy.isEmpty(), false);
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(TestClientMachine)
#include "test_client_machine.moc"

View file

@ -30,6 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "mock_client.h"
#include "mock_screens.h"
#include "mock_workspace.h"
#include "testutils.h"
// Frameworks
#include <KConfigGroup>
// Qt
@ -861,5 +862,6 @@ void TestScreenEdges::testClientEdge()
QCOMPARE(Cursor::pos(), QPoint(1, 50));
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(TestScreenEdges)
#include "test_screen_edges.moc"

View file

@ -371,5 +371,6 @@ void TestXcbSizeHints::geometryHintsBeforeRead()
QCOMPARE(hints.windowGravity(), XCB_GRAVITY_NORTH_WEST);
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(TestXcbSizeHints)
#include "test_xcb_size_hints.moc"

View file

@ -207,5 +207,6 @@ void TestXcbWindow::destroyNotManaged()
QVERIFY(attribs);
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(TestXcbWindow)
#include "test_xcb_window.moc"

View file

@ -525,5 +525,6 @@ void TestXcbWrapper::testMotif()
QTEST(hints.close(), "expectedClose");
}
Q_CONSTRUCTOR_FUNCTION(forceXcb)
QTEST_MAIN(TestXcbWrapper)
#include "test_xcb_wrapper.moc"

View file

@ -24,6 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// XCB
#include <xcb/xcb.h>
namespace {
static void forceXcb() {
qputenv("QT_QPA_PLATFORM", QByteArrayLiteral("xcb"));
}
}
namespace KWin {
/**