aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-05-19 06:34:04 +0200
committerLiang Qi <liang.qi@qt.io>2016-05-19 06:34:04 +0200
commitafc84775efdc6e13e2e210bb94e115b378d90134 (patch)
tree24985cc95111ecf2b637019363a32414b95860fe /tests
parent6371b208a9e55845090dcd34234e314c6587c105 (diff)
parent72515ebe5a63c201fde09471bc646dbe15110a6b (diff)
Merge remote-tracking branch 'origin/5.6.1' into 5.6
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qml/qqmlcomponent/data/callingQmlContext.qml13
-rw-r--r--tests/auto/qml/qqmlcomponent/data/callingQmlContextComponent.qml3
-rw-r--r--tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp59
-rw-r--r--tests/auto/quick/examples/tst_examples.cpp12
-rw-r--r--tests/auto/shared/imports.pri9
-rw-r--r--tests/manual/qmlplugindump/tests/dumper/Dummy/dummy.pro8
-rw-r--r--tests/manual/qmlplugindump/tests/dumper/Imports/imports.pro8
-rw-r--r--tests/manual/qmlplugindump/tests/dumper/Versions/versions.pro8
8 files changed, 92 insertions, 28 deletions
diff --git a/tests/auto/qml/qqmlcomponent/data/callingQmlContext.qml b/tests/auto/qml/qqmlcomponent/data/callingQmlContext.qml
new file mode 100644
index 0000000000..8193d0f36c
--- /dev/null
+++ b/tests/auto/qml/qqmlcomponent/data/callingQmlContext.qml
@@ -0,0 +1,13 @@
+import QtQml 2.0
+import qqmlcomponenttest 1.0
+QtObject {
+ property Component factory
+ property QtObject incubatedObject
+
+ Component.onCompleted: {
+ var incubatorState = factory.incubateObject(null, { value: 42 })
+ incubatorState.onStatusChanged = function(status) {
+ incubatedObject = incubatorState.object
+ }
+ }
+}
diff --git a/tests/auto/qml/qqmlcomponent/data/callingQmlContextComponent.qml b/tests/auto/qml/qqmlcomponent/data/callingQmlContextComponent.qml
new file mode 100644
index 0000000000..adf491c87e
--- /dev/null
+++ b/tests/auto/qml/qqmlcomponent/data/callingQmlContextComponent.qml
@@ -0,0 +1,3 @@
+import qqmlcomponenttest 1.0
+CallingContextCheckingClass {
+}
diff --git a/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp b/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp
index 85579a6019..680ea720a8 100644
--- a/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp
+++ b/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp
@@ -40,6 +40,7 @@
#include <QtQuick>
#include <QtQuick/private/qquickrectangle_p.h>
#include <QtQuick/private/qquickmousearea_p.h>
+#include <private/qv8engine_p.h>
#include <qcolor.h>
#include "../../shared/util.h"
#include "testhttpserver.h"
@@ -116,6 +117,7 @@ private slots:
void onDestructionCount();
void recursion();
void recursionContinuation();
+ void callingContextForInitialProperties();
private:
QQmlEngine engine;
@@ -523,6 +525,63 @@ void tst_qqmlcomponent::recursionContinuation()
QVERIFY(object->property("success").toBool());
}
+class CallingContextCheckingClass : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int value READ value WRITE setValue)
+public:
+ CallingContextCheckingClass()
+ : m_value(0)
+ {}
+
+ int value() const { return m_value; }
+ void setValue(int v) {
+ scopeObject.clear();
+ callingContextData.setContextData(0);
+
+ m_value = v;
+ QJSEngine *jsEngine = qjsEngine(this);
+ if (!jsEngine)
+ return;
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(jsEngine);
+ if (!v4)
+ return;
+ QV4::Scope scope(v4);
+ QV4::Scoped<QV4::QmlContext> qmlContext(scope, v4->qmlContext());
+ if (!qmlContext)
+ return;
+ callingContextData = qmlContext->qmlContext();
+ scopeObject = qmlContext->qmlScope();
+ }
+
+ int m_value;
+ QQmlGuardedContextData callingContextData;
+ QPointer<QObject> scopeObject;
+};
+
+void tst_qqmlcomponent::callingContextForInitialProperties()
+{
+ qmlRegisterType<CallingContextCheckingClass>("qqmlcomponenttest", 1, 0, "CallingContextCheckingClass");
+
+ QQmlComponent testFactory(&engine, testFileUrl("callingQmlContextComponent.qml"));
+
+ QQmlComponent component(&engine, testFileUrl("callingQmlContext.qml"));
+ QScopedPointer<QObject> root(component.beginCreate(engine.rootContext()));
+ QVERIFY(!root.isNull());
+ root->setProperty("factory", QVariant::fromValue(&testFactory));
+ component.completeCreate();
+ QTRY_VERIFY(qvariant_cast<QObject *>(root->property("incubatedObject")));
+ QObject *o = qvariant_cast<QObject *>(root->property("incubatedObject"));
+ CallingContextCheckingClass *checker = qobject_cast<CallingContextCheckingClass*>(o);
+ QVERIFY(checker);
+
+ QVERIFY(!checker->callingContextData.isNull());
+ QVERIFY(checker->callingContextData->urlString().endsWith(QStringLiteral("callingQmlContext.qml")));
+
+ QVERIFY(!checker->scopeObject.isNull());
+ QVERIFY(checker->scopeObject->metaObject()->indexOfProperty("incubatedObject") != -1);
+}
+
QTEST_MAIN(tst_qqmlcomponent)
#include "tst_qqmlcomponent.moc"
diff --git a/tests/auto/quick/examples/tst_examples.cpp b/tests/auto/quick/examples/tst_examples.cpp
index 90c78ec942..20031c24d9 100644
--- a/tests/auto/quick/examples/tst_examples.cpp
+++ b/tests/auto/quick/examples/tst_examples.cpp
@@ -79,15 +79,14 @@ private:
tst_examples::tst_examples()
{
// Add files to exclude here
- excludedFiles << "examples/quick/canvas/tiger/tiger.qml"; // QTBUG-26528
excludedFiles << "snippets/qml/listmodel/listmodel.qml"; //Just a ListModel, no root QQuickItem
excludedFiles << "examples/quick/demos/photosurface/photosurface.qml"; // root item is Window rather than Item
- // Add directories you want excluded here (don't add examples/, because they install to examples/qtdeclarative/)
+ // Add directories you want excluded here
excludedDirs << "shared"; //Not an example
- excludedDirs << "quick/text/fonts"; // QTBUG-29004
excludedDirs << "snippets/qml/path"; //No root QQuickItem
- excludedDirs << "tutorials/gettingStartedQml"; //C++ example, but no cpp files in root dir
+ excludedDirs << "examples/qml/qmlextensionplugins"; //Requires special import search path
+ excludedDirs << "examples/quick/tutorials/gettingStartedQml"; //C++ example, but no cpp files in root dir
// These snippets are not expected to run on their own.
excludedDirs << "snippets/qml/visualdatamodel_rootindex";
@@ -175,9 +174,8 @@ void tst_examples::namingConvention(const QDir &d)
void tst_examples::namingConvention()
{
QStringList examplesLocations;
- examplesLocations << QLibraryInfo::location(QLibraryInfo::ExamplesPath) + QLatin1String("/qtdeclarative");
- examplesLocations << QLibraryInfo::location(QLibraryInfo::ExamplesPath) + QLatin1String("/qtquick");
- examplesLocations << QLibraryInfo::location(QLibraryInfo::ExamplesPath) + QLatin1String("/qtqml");
+ examplesLocations << QLibraryInfo::location(QLibraryInfo::ExamplesPath) + QLatin1String("/qml");
+ examplesLocations << QLibraryInfo::location(QLibraryInfo::ExamplesPath) + QLatin1String("/quick");
foreach(const QString &examples, examplesLocations) {
QDir d(examples);
diff --git a/tests/auto/shared/imports.pri b/tests/auto/shared/imports.pri
index 20e9bcb371..9cbf286386 100644
--- a/tests/auto/shared/imports.pri
+++ b/tests/auto/shared/imports.pri
@@ -1,7 +1,4 @@
-copyimportfiles.input = IMPORT_FILES
-copyimportfiles.output = $$DESTDIR/${QMAKE_FILE_IN_BASE}${QMAKE_FILE_EXT}
-copyimportfiles.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
-copyimportfiles.CONFIG += no_link_no_clean
-copyimportfiles.variable_out = PRE_TARGETDEPS
-QMAKE_EXTRA_COMPILERS += copyimportfiles
+importfiles.files = $$IMPORT_FILES
+importfiles.path = $$DESTDIR
+COPIES += importfiles
diff --git a/tests/manual/qmlplugindump/tests/dumper/Dummy/dummy.pro b/tests/manual/qmlplugindump/tests/dumper/Dummy/dummy.pro
index 3e690d389f..81975ee01c 100644
--- a/tests/manual/qmlplugindump/tests/dumper/Dummy/dummy.pro
+++ b/tests/manual/qmlplugindump/tests/dumper/Dummy/dummy.pro
@@ -18,11 +18,9 @@ HEADERS += \
DISTFILES = qmldir
!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
- copy_qmldir.target = $$OUT_PWD/qmldir
- copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldir
- copy_qmldir.commands = $(COPY_FILE) \"$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)\"
- QMAKE_EXTRA_TARGETS += copy_qmldir
- PRE_TARGETDEPS += $$copy_qmldir.target
+ cpqmldir.files = qmldir
+ cpqmldir.path = $$OUT_PWD
+ COPIES += cpqmldir
}
qmldir.files = qmldir
diff --git a/tests/manual/qmlplugindump/tests/dumper/Imports/imports.pro b/tests/manual/qmlplugindump/tests/dumper/Imports/imports.pro
index fe9caea13a..1033c7a28f 100644
--- a/tests/manual/qmlplugindump/tests/dumper/Imports/imports.pro
+++ b/tests/manual/qmlplugindump/tests/dumper/Imports/imports.pro
@@ -18,11 +18,9 @@ HEADERS += \
DISTFILES = qmldir
!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
- copy_qmldir.target = $$OUT_PWD/qmldir
- copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldir
- copy_qmldir.commands = $(COPY_FILE) \"$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)\"
- QMAKE_EXTRA_TARGETS += copy_qmldir
- PRE_TARGETDEPS += $$copy_qmldir.target
+ cpqmldir.files = qmldir
+ cpqmldir.path = $$OUT_PWD
+ COPIES += cpqmldir
}
qmldir.files = qmldir
diff --git a/tests/manual/qmlplugindump/tests/dumper/Versions/versions.pro b/tests/manual/qmlplugindump/tests/dumper/Versions/versions.pro
index 951f886368..d59470862d 100644
--- a/tests/manual/qmlplugindump/tests/dumper/Versions/versions.pro
+++ b/tests/manual/qmlplugindump/tests/dumper/Versions/versions.pro
@@ -18,11 +18,9 @@ HEADERS += \
DISTFILES = qmldir
!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
- copy_qmldir.target = $$OUT_PWD/qmldir
- copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldir
- copy_qmldir.commands = $(COPY_FILE) \"$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)\"
- QMAKE_EXTRA_TARGETS += copy_qmldir
- PRE_TARGETDEPS += $$copy_qmldir.target
+ cpqmldir.files = qmldir
+ cpqmldir.path = $$OUT_PWD
+ COPIES += cpqmldir
}
qmldir.files = qmldir