aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-02-14 01:00:08 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-02-14 01:00:09 +0100
commite6199a8357cb9a97a3de0e86af387ddbe15a18ea (patch)
treec33fdae61742736ad47a33ddc2458aed07d53b1b /tests/auto/qml
parent57604562db870f7b05d4349761d73e054dbe04c6 (diff)
parent68d0377736a541fa29d1aaba6b7aa4a4cf8781ef (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Diffstat (limited to 'tests/auto/qml')
-rw-r--r--tests/auto/qml/qqmlapplicationengine/testapp/delayedExit.qml11
-rw-r--r--tests/auto/qml/qqmlapplicationengine/testapp/delayedQuit.qml (renamed from tests/auto/qml/qqmlapplicationengine/testapp/main.qml)0
-rw-r--r--tests/auto/qml/qqmlapplicationengine/testapp/immediateExit.qml8
-rw-r--r--tests/auto/qml/qqmlapplicationengine/testapp/immediateQuit.qml8
-rw-r--r--tests/auto/qml/qqmlapplicationengine/testapp/main.cpp2
-rw-r--r--tests/auto/qml/qqmlapplicationengine/testapp/main.qrc5
-rw-r--r--tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp44
-rw-r--r--tests/auto/qml/qqmlconnections/data/override-proxy-type.qml13
-rw-r--r--tests/auto/qml/qqmlconnections/tst_qqmlconnections.cpp25
9 files changed, 103 insertions, 13 deletions
diff --git a/tests/auto/qml/qqmlapplicationengine/testapp/delayedExit.qml b/tests/auto/qml/qqmlapplicationengine/testapp/delayedExit.qml
new file mode 100644
index 0000000000..3d67c958bb
--- /dev/null
+++ b/tests/auto/qml/qqmlapplicationengine/testapp/delayedExit.qml
@@ -0,0 +1,11 @@
+import QtQml 2.0
+
+QtObject {
+ id: root
+ property Timer t: Timer { interval: 1; running: true; onTriggered: Qt.exit(0); }
+ property Connections c: Connections {
+ target: Qt.application
+ onAboutToQuit: console.log("End");
+ }
+ Component.onCompleted: console.log("Start: " + Qt.application.arguments[1]);
+}
diff --git a/tests/auto/qml/qqmlapplicationengine/testapp/main.qml b/tests/auto/qml/qqmlapplicationengine/testapp/delayedQuit.qml
index c75485a7f7..c75485a7f7 100644
--- a/tests/auto/qml/qqmlapplicationengine/testapp/main.qml
+++ b/tests/auto/qml/qqmlapplicationengine/testapp/delayedQuit.qml
diff --git a/tests/auto/qml/qqmlapplicationengine/testapp/immediateExit.qml b/tests/auto/qml/qqmlapplicationengine/testapp/immediateExit.qml
new file mode 100644
index 0000000000..46634f3f51
--- /dev/null
+++ b/tests/auto/qml/qqmlapplicationengine/testapp/immediateExit.qml
@@ -0,0 +1,8 @@
+import QtQml 2.0
+
+QtObject {
+ Component.onCompleted: {
+ console.log("End: " + Qt.application.arguments[1]);
+ Qt.exit(0)
+ }
+}
diff --git a/tests/auto/qml/qqmlapplicationengine/testapp/immediateQuit.qml b/tests/auto/qml/qqmlapplicationengine/testapp/immediateQuit.qml
new file mode 100644
index 0000000000..1da9d1201a
--- /dev/null
+++ b/tests/auto/qml/qqmlapplicationengine/testapp/immediateQuit.qml
@@ -0,0 +1,8 @@
+import QtQml 2.0
+
+QtObject {
+ Component.onCompleted: {
+ console.log("End: " + Qt.application.arguments[1]);
+ Qt.quit()
+ }
+}
diff --git a/tests/auto/qml/qqmlapplicationengine/testapp/main.cpp b/tests/auto/qml/qqmlapplicationengine/testapp/main.cpp
index a57889fe86..be0d98a2df 100644
--- a/tests/auto/qml/qqmlapplicationengine/testapp/main.cpp
+++ b/tests/auto/qml/qqmlapplicationengine/testapp/main.cpp
@@ -32,6 +32,6 @@
int main (int argc, char *argv[])
{
QCoreApplication app(argc, argv);
- QQmlApplicationEngine e(QUrl("qrc:///main.qml"));
+ QQmlApplicationEngine e(QUrl(QString("qrc:///") + argv[1]));
return app.exec();
}
diff --git a/tests/auto/qml/qqmlapplicationengine/testapp/main.qrc b/tests/auto/qml/qqmlapplicationengine/testapp/main.qrc
index 5f6483ac33..82b695bbd8 100644
--- a/tests/auto/qml/qqmlapplicationengine/testapp/main.qrc
+++ b/tests/auto/qml/qqmlapplicationengine/testapp/main.qrc
@@ -1,5 +1,8 @@
<RCC>
<qresource prefix="/">
- <file>main.qml</file>
+ <file>immediateQuit.qml</file>
+ <file>immediateExit.qml</file>
+ <file>delayedQuit.qml</file>
+ <file>delayedExit.qml</file>
</qresource>
</RCC>
diff --git a/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp b/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
index daeb9b5455..ce654dc45e 100644
--- a/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
+++ b/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
@@ -46,6 +46,7 @@ private slots:
void initTestCase();
void basicLoading();
void testNonResolvedPath();
+ void application_data();
void application();
void applicationProperties();
void removeObjectsWhenDestroyed();
@@ -111,35 +112,56 @@ void tst_qqmlapplicationengine::testNonResolvedPath()
}
}
+void tst_qqmlapplicationengine::application_data()
+{
+ QTest::addColumn<QByteArray>("qmlFile");
+ QTest::addColumn<QByteArray>("expectedStdErr");
+
+ QTest::newRow("delayed quit") << QByteArray("delayedQuit.qml")
+ << QByteArray("qml: Start: delayedQuit.qml\nqml: End\n");
+ QTest::newRow("delayed exit") << QByteArray("delayedExit.qml")
+ << QByteArray("qml: Start: delayedExit.qml\nqml: End\n");
+ QTest::newRow("immediate quit") << QByteArray("immediateQuit.qml")
+ << QByteArray("qml: End: immediateQuit.qml\n");
+ QTest::newRow("immediate exit") << QByteArray("immediateExit.qml")
+ << QByteArray("qml: End: immediateExit.qml\n");
+}
+
void tst_qqmlapplicationengine::application()
{
/* This test batches together some tests about running an external application
written with QQmlApplicationEngine. The application tests the following functionality
which is easier to do by watching a separate process:
- -Loads relative paths from the working directory
- -quits when quit is called
- -emits aboutToQuit after quit is called
- -has access to application command line arguments
+ - Loads relative paths from the working directory
+ - Quits when quit is called
+ - Exits when exit is called
+ - Emits aboutToQuit after quit is called
+ - Has access to application command line arguments
Note that checking the output means that on builds with extra debugging, this might fail with a false positive.
Also the testapp is automatically built and installed in shadow builds, so it does NOT use testData
*/
+
+ QFETCH(QByteArray, qmlFile);
+ QFETCH(QByteArray, expectedStdErr);
+
#if QT_CONFIG(process)
QDir::setCurrent(buildDir);
QProcess *testProcess = new QProcess(this);
QStringList args;
- args << QLatin1String("testData");
+ args << qmlFile; // QML file passed as an argument is going to be run by testapp.
testProcess->start(QLatin1String("testapp/testapp"), args);
QVERIFY(testProcess->waitForFinished(5000));
QCOMPARE(testProcess->exitCode(), 0);
- QByteArray test_stdout = testProcess->readAllStandardOutput();
- QByteArray test_stderr = testProcess->readAllStandardError();
- QByteArray test_stderr_target("qml: Start: testData\nqml: End\n");
+ QByteArray testStdOut = testProcess->readAllStandardOutput();
+ QByteArray testStdErr = testProcess->readAllStandardError();
#ifdef Q_OS_WIN
- test_stderr_target.replace('\n', QByteArray("\r\n"));
+ expectedStdErr.replace('\n', QByteArray("\r\n"));
#endif
- QCOMPARE(test_stdout, QByteArray(""));
- QVERIFY(QString(test_stderr).endsWith(QString(test_stderr_target)));
+ QCOMPARE(testStdOut, QByteArray(""));
+ QVERIFY2(QString(testStdErr).endsWith(QString(expectedStdErr)),
+ QByteArray("\nExpected ending:\n") + expectedStdErr
+ + QByteArray("\nActual output:\n") + testStdErr);
delete testProcess;
QDir::setCurrent(srcDir);
#else // process
diff --git a/tests/auto/qml/qqmlconnections/data/override-proxy-type.qml b/tests/auto/qml/qqmlconnections/data/override-proxy-type.qml
new file mode 100644
index 0000000000..80e459966b
--- /dev/null
+++ b/tests/auto/qml/qqmlconnections/data/override-proxy-type.qml
@@ -0,0 +1,13 @@
+import QtQml 2.12
+import test.proxy 1.0
+
+Proxy {
+ property int testEnum: 0;
+ id: proxy
+ property Connections connections: Connections {
+ target: proxy
+ onSomeSignal: testEnum = Proxy.EnumValue;
+ }
+
+ Component.onCompleted: someSignal()
+}
diff --git a/tests/auto/qml/qqmlconnections/tst_qqmlconnections.cpp b/tests/auto/qml/qqmlconnections/tst_qqmlconnections.cpp
index 8ef00f8080..dc29363fcf 100644
--- a/tests/auto/qml/qqmlconnections/tst_qqmlconnections.cpp
+++ b/tests/auto/qml/qqmlconnections/tst_qqmlconnections.cpp
@@ -55,6 +55,7 @@ private slots:
void disabledAtStart();
void clearImplicitTarget();
void onWithoutASignal();
+ void noAcceleratedGlobalLookup();
private:
QQmlEngine engine;
@@ -407,6 +408,30 @@ void tst_qqmlconnections::onWithoutASignal()
QVERIFY(item == nullptr); // should parse error, and not give us an item (or crash).
}
+class Proxy : public QObject
+{
+ Q_OBJECT
+public:
+ enum MyEnum { EnumValue = 20, AnotherEnumValue };
+ Q_ENUM(MyEnum)
+
+signals:
+ void someSignal();
+};
+
+void tst_qqmlconnections::noAcceleratedGlobalLookup()
+{
+ qRegisterMetaType<Proxy::MyEnum>();
+ qmlRegisterType<Proxy>("test.proxy", 1, 0, "Proxy");
+ QQmlEngine engine;
+ QQmlComponent c(&engine, testFileUrl("override-proxy-type.qml"));
+ QVERIFY(c.isReady());
+ QScopedPointer<QObject> object(c.create());
+ const QVariant val = object->property("testEnum");
+ QCOMPARE(val.type(), QMetaType::Int);
+ QCOMPARE(val.toInt(), int(Proxy::EnumValue));
+}
+
QTEST_MAIN(tst_qqmlconnections)
#include "tst_qqmlconnections.moc"