summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernd Weimer <bernd.weimer@pelagicore.com>2020-01-29 11:15:18 +0100
committerBernd Weimer <bernd.weimer@pelagicore.com>2020-02-18 17:29:25 +0100
commit26884ef4eaa545ba3d29fa1e62af1fb356bed998 (patch)
treed78788cd50ac384a31c5c617dfdf4b4bb9b19c1b
parent2f8a08e7d3c8e0a7136587fc8080ea2e1f8e4485 (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.cpp2
-rw-r--r--src/tools/testrunner/testrunner.cpp12
-rw-r--r--src/tools/testrunner/testrunner.h3
-rw-r--r--src/tools/testrunner/testrunner_p.h8
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;
};