summaryrefslogtreecommitdiff
path: root/tests/auto
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2018-04-26 10:25:51 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2018-04-27 08:30:21 +0000
commit967b83e30cde5ca04c126a4d9631d887513c2e98 (patch)
tree3f7918b3fbf80767b0e3fba23d04df7a517b6f8d /tests/auto
parent34a1b32ecf116d7c4a6ad43f0f6f9d68494a63be (diff)
downloadqtivi-967b83e30cde5ca04c126a4d9631d887513c2e98.tar.gz
Fix the QIviServiceManager singleton ownership
This makes sure the QIviServiceManager doesn't get deleted from the QQmlEngine when it gets destroyed Task-number: QTAUTO-843 Change-Id: Ie1aae9d9cdefaf443db35eed1483f3b6721e962f Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp b/tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp
index 9444e29..ee08de0 100644
--- a/tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp
+++ b/tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp
@@ -28,6 +28,8 @@
#include <QString>
#include <QtTest>
+#include <QQmlEngine>
+#include <QQmlComponent>
#include <qiviservicemanager.h>
#include <QtIviCore/private/qiviservicemanager_p.h>
#include <qiviserviceinterface.h>
@@ -87,6 +89,7 @@ private Q_SLOTS:
void initTestCase();
void cleanup();
+ void testRetakeSingleton();
void testHasInterface();
void testFindServiceObjectsReturnInValidInstance();
void testFindServiceObjects_data();
@@ -134,6 +137,29 @@ void ServiceManagerTest::cleanup()
manager->unloadAllBackends();
}
+void ServiceManagerTest::testRetakeSingleton()
+{
+ QPointer<QIviServiceManager> serviceManager = QIviServiceManager::instance();
+ QQmlEngine *engine = new QQmlEngine;
+
+ QByteArray qml ("import QtQuick 2.0; \n\
+ import QtIvi 1.0; \n\
+ QtObject { \n\
+ Component.onCompleted: { \n\
+ var count = ServiceManager.count; \n\
+ } \n\
+ } \n\
+ ");
+ QQmlComponent component(engine);
+ component.setData(qml, QUrl());
+ QScopedPointer<QObject> obj(component.create());
+ QVERIFY2(obj, qPrintable(component.errorString()));
+
+ delete engine;
+
+ QVERIFY(!serviceManager.isNull());
+}
+
#define COMPARE_SERVICE_OBJECT(_model_, _index_, _serviceObject_) \
do { \
QString name = _model_->data(_model_->index(_index_), Qt::DisplayRole).toString(); \
@@ -296,6 +322,6 @@ void ServiceManagerTest::pluginLoaderTest()
Q_IMPORT_PLUGIN(SimpleStaticPlugin)
Q_IMPORT_PLUGIN(WrongMetadataStaticPlugin)
-QTEST_APPLESS_MAIN(ServiceManagerTest)
+QTEST_MAIN(ServiceManagerTest)
#include "tst_servicemanagertest.moc"