Verify context creation in Quick tests.
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Mon, 26 Jan 2015 08:25:15 +0000 (09:25 +0100)
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Thu, 29 Jan 2015 11:10:49 +0000 (11:10 +0000)
Verify initialization steps and initialize pointers to avoid
crashes.

Change-Id: I2d3a53c6719727aed56e673d0d8cf5a02ae0f0f6
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
tests/auto/quick/nodes/tst_nodestest.cpp
tests/auto/quick/qquickitemlayer/tst_qquickitemlayer.cpp
tests/auto/quick/scenegraph/tst_scenegraph.cpp

index e017cae..37a73cc 100644 (file)
@@ -82,19 +82,24 @@ void NodesTest::initTestCase()
 
     surface = new QOffscreenSurface;
     surface->create();
+    QVERIFY(surface->isValid());
 
     context = new QOpenGLContext();
-    context->create();
-    context->makeCurrent(surface);
+    QVERIFY(context->create());
+    QVERIFY(context->makeCurrent(surface));
 
     renderContext = renderLoop->createRenderContext(renderLoop->sceneGraphContext());
+    QVERIFY(renderContext);
     renderContext->initialize(context);
+    QVERIFY(renderContext->isValid());
 }
 
 void NodesTest::cleanupTestCase()
 {
-    renderContext->invalidate();
-    context->doneCurrent();
+    if (renderContext)
+        renderContext->invalidate();
+    if (context)
+        context->doneCurrent();
     delete context;
     delete surface;
 }
@@ -133,10 +138,12 @@ public:
 int DummyRenderer::globalRendereringOrder;
 
 NodesTest::NodesTest()
+    : surface(Q_NULLPTR)
+    , context(Q_NULLPTR)
+    , renderContext(Q_NULLPTR)
 {
 }
 
-
 void NodesTest::propegate()
 {
     QSGRootNode root;
index eb720e5..d462588 100644 (file)
@@ -62,6 +62,7 @@ public:
     }
 
 private slots:
+    void initTestCase() Q_DECL_OVERRIDE;
     void layerEnabled();
     void layerSmooth();
     void layerMipmap();
@@ -92,14 +93,20 @@ private:
 };
 
 tst_QQuickItemLayer::tst_QQuickItemLayer()
-    : m_mesaVersion(0)
+    : m_isMesaSoftwareRasterizer(false)
+    , m_mesaVersion(0)
 {
+}
+
+void tst_QQuickItemLayer::initTestCase()
+{
+    QQmlDataTest::initTestCase();
     QWindow window;
     QOpenGLContext context;
     window.setSurfaceType(QWindow::OpenGLSurface);
     window.create();
-    context.create();
-    context.makeCurrent(&window);
+    QVERIFY(context.create());
+    QVERIFY(context.makeCurrent(&window));
     const char *vendor = (const char *)context.functions()->glGetString(GL_VENDOR);
     const char *renderer = (const char *)context.functions()->glGetString(GL_RENDERER);
     m_isMesaSoftwareRasterizer = strcmp(vendor, "Mesa Project") == 0
index 4f24acc..7189fda 100644 (file)
@@ -222,7 +222,7 @@ void tst_SceneGraph::manyWindows()
     QOpenGLContext sharedGLContext;
     ShareContextResetter cleanup; // To avoid dangling pointer in case of test-failure.
     if (shared) {
-        sharedGLContext.create();
+        QVERIFY(sharedGLContext.create());
         QOpenGLContextPrivate::setGlobalShareContext(&sharedGLContext);
     }
 
@@ -459,7 +459,7 @@ void tst_SceneGraph::hideWithOtherContext()
     window.resize(100, 100);
     window.create();
     QOpenGLContext context;
-    context.create();
+    QVERIFY(context.create());
     bool renderingOnMainThread = false;
 
     {