aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlapplicationengine
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2020-01-06 08:56:55 +0100
committerFabian Kosmale <fabian.kosmale@qt.io>2020-01-06 10:20:47 +0100
commitc3de85efb9f354907a6c74889d15dacd0fa1eda7 (patch)
treeee679b07fc2470e00d9be670210b2fe55c9850d1 /tests/auto/qml/qqmlapplicationengine
parent17ed029e965d30fa4f75c50d0c2439e901a1f3a8 (diff)
Emit QQmlEngine::warnings when load fails
This uses the existing infrastructure for reporting QML errors, instead of simply using qWarning. Fixes: QTBUG-81093 Change-Id: Ie18656a57f28fa9dfe922936fd05b44ebe1281e2 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests/auto/qml/qqmlapplicationengine')
-rw-r--r--tests/auto/qml/qqmlapplicationengine/data/invalid.qml5
-rw-r--r--tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp16
2 files changed, 21 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlapplicationengine/data/invalid.qml b/tests/auto/qml/qqmlapplicationengine/data/invalid.qml
new file mode 100644
index 0000000000..5939a69a7a
--- /dev/null
+++ b/tests/auto/qml/qqmlapplicationengine/data/invalid.qml
@@ -0,0 +1,5 @@
+import QtQml 2.12
+
+QtObject {
+ JUST_SOME_INVALID_PROPERTY: 0
+}
diff --git a/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp b/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
index 0f5eea8b95..5e855efe1a 100644
--- a/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
+++ b/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
@@ -30,6 +30,7 @@
#include <QQmlApplicationEngine>
#include <QScopedPointer>
#include <QSignalSpy>
+#include <QRegularExpression>
#if QT_CONFIG(process)
#include <QProcess>
#endif
@@ -53,6 +54,7 @@ private slots:
void loadTranslation_data();
void loadTranslation();
void setInitialProperties();
+ void failureToLoadTriggersWarningSignal();
private:
QString buildDir;
@@ -293,6 +295,20 @@ void tst_qqmlapplicationengine::setInitialProperties()
}
}
+Q_DECLARE_METATYPE(QList<QQmlError>) // for signalspy below
+
+void tst_qqmlapplicationengine::failureToLoadTriggersWarningSignal()
+{
+ auto url = testFileUrl("invalid.qml");
+ qRegisterMetaType<QList<QQmlError>>();
+ QTest::ignoreMessage(QtMsgType::QtWarningMsg, "QQmlApplicationEngine failed to load component");
+ QTest::ignoreMessage(QtMsgType::QtWarningMsg, QRegularExpression(url.toString() + QLatin1Char('*')));
+ QQmlApplicationEngine test;
+ QSignalSpy warningObserver(&test, &QQmlApplicationEngine::warnings);
+ test.load(url);
+ QTRY_COMPARE(warningObserver.count(), 1);
+}
+
QTEST_MAIN(tst_qqmlapplicationengine)
#include "tst_qqmlapplicationengine.moc"