diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-01-06 08:56:55 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-01-06 10:20:47 +0100 |
commit | c3de85efb9f354907a6c74889d15dacd0fa1eda7 (patch) | |
tree | ee679b07fc2470e00d9be670210b2fe55c9850d1 /tests/auto/qml/qqmlapplicationengine | |
parent | 17ed029e965d30fa4f75c50d0c2439e901a1f3a8 (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.qml | 5 | ||||
-rw-r--r-- | tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp | 16 |
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" |