diff options
author | Bernd Weimer <bernd.weimer@pelagicore.com> | 2020-01-29 11:15:18 +0100 |
---|---|---|
committer | Bernd Weimer <bernd.weimer@pelagicore.com> | 2020-02-18 17:29:25 +0100 |
commit | 26884ef4eaa545ba3d29fa1e62af1fb356bed998 (patch) | |
tree | d78788cd50ac384a31c5c617dfdf4b4bb9b19c1b | |
parent | 2f8a08e7d3c8e0a7136587fc8080ea2e1f8e4485 (diff) |
Allow qmltestrunner to shutdown gracefully
Don't quit right away, when the QmlEngine quits, but let the normal
shutdown procedure run. This prevents warnings "QProcess: Destroyed
while process is still running".
Change-Id: I2d96961052b71f05b8a51f59c7fdcc082342800e
Reviewed-by: Dominik Holland <dominik.holland@qt.io>
-rw-r--r-- | src/tools/appman/appman.cpp | 2 | ||||
-rw-r--r-- | src/tools/testrunner/testrunner.cpp | 12 | ||||
-rw-r--r-- | src/tools/testrunner/testrunner.h | 3 | ||||
-rw-r--r-- | src/tools/testrunner/testrunner_p.h | 8 |
4 files changed, 5 insertions, 20 deletions
diff --git a/src/tools/appman/appman.cpp b/src/tools/appman/appman.cpp index 63076ae5..62765f40 100644 --- a/src/tools/appman/appman.cpp +++ b/src/tools/appman/appman.cpp @@ -117,7 +117,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) a.showWindow(cfg.fullscreen() && !cfg.noFullscreen()); #if defined(AM_TESTRUNNER) - return TestRunner::exec(a.qmlEngine()); + return TestRunner::exec(); #else return MainBase::exec(); #endif diff --git a/src/tools/testrunner/testrunner.cpp b/src/tools/testrunner/testrunner.cpp index ce10cefd..7402adad 100644 --- a/src/tools/testrunner/testrunner.cpp +++ b/src/tools/testrunner/testrunner.cpp @@ -135,7 +135,6 @@ QTestRootObject::QTestRootObject(QObject *parent) : QObject(parent) , m_windowShown(false) , m_hasTestCase(false) - , m_hasQuit(false) , m_defined(new QQmlPropertyMap(this)) { #if defined(QT_OPENGL_ES_2_ANGLE) @@ -153,9 +152,6 @@ QTestRootObject *QTestRootObject::instance() return object; } - - - static QObject *testRootObject(QQmlEngine *engine, QJSEngine *jsEngine) { Q_UNUSED(engine); @@ -205,20 +201,16 @@ void TestRunner::initialize(const QString &testFile, const QStringList &testRunn QTestRootObject::instance()->init(); } -int TestRunner::exec(QQmlEngine *engine) +int TestRunner::exec() { QEventLoop eventLoop; - QObject::connect(engine, &QQmlEngine::quit, - QTestRootObject::instance(), &QTestRootObject::quit); - QObject::connect(engine, &QQmlEngine::quit, - &eventLoop, &QEventLoop::quit); QTestRootObject::instance()->setWindowShown(true); if (QTest::printAvailableFunctions) return 0; - if (!QTestRootObject::instance()->hasQuit() && QTestRootObject::instance()->hasTestCase()) + if (QTestRootObject::instance()->hasTestCase()) eventLoop.exec(); QuickTestResult::setProgramName(nullptr); diff --git a/src/tools/testrunner/testrunner.h b/src/tools/testrunner/testrunner.h index 00d2240c..db30c4d9 100644 --- a/src/tools/testrunner/testrunner.h +++ b/src/tools/testrunner/testrunner.h @@ -44,7 +44,6 @@ #include <QtAppManCommon/global.h> -QT_FORWARD_DECLARE_CLASS(QQmlEngine) QT_FORWARD_DECLARE_CLASS(QStringList) QT_BEGIN_NAMESPACE_AM @@ -53,7 +52,7 @@ class TestRunner { public: static void initialize(const QString &testFile, const QStringList &testRunnerArguments); - static int exec(QQmlEngine *engine); + static int exec(); }; QT_END_NAMESPACE_AM diff --git a/src/tools/testrunner/testrunner_p.h b/src/tools/testrunner/testrunner_p.h index bc29c250..cf00f516 100644 --- a/src/tools/testrunner/testrunner_p.h +++ b/src/tools/testrunner/testrunner_p.h @@ -62,8 +62,6 @@ public: static QTestRootObject *instance(); - bool hasQuit() const { return m_hasQuit; } - bool hasTestCase() const { return m_hasTestCase; } void setHasTestCase(bool value) { m_hasTestCase = value; emit hasTestCaseChanged(); } @@ -71,19 +69,15 @@ public: void setWindowShown(bool value) { m_windowShown = value; emit windowShownChanged(); } QQmlPropertyMap *defined() const { return m_defined; } - void init() { setWindowShown(false); setHasTestCase(false); m_hasQuit = false; } + void init() { setWindowShown(false); setHasTestCase(false); } Q_SIGNALS: void windowShownChanged(); void hasTestCaseChanged(); -private Q_SLOTS: - void quit() { m_hasQuit = true; } - private: bool m_windowShown; bool m_hasTestCase; - bool m_hasQuit; QQmlPropertyMap *m_defined; friend class TestRunner; }; |