Make qqmlmoduleplugin tests pass in shadow builds.
authorAndrew den Exter <andrew.den-exter@nokia.com>
Thu, 17 May 2012 04:38:33 +0000 (14:38 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 24 May 2012 07:42:42 +0000 (09:42 +0200)
The plugin binary and qml files for a module need to be in the same
directory.  This was solved for source builds because the files were
already located in the import path, but with shadow builds the files
were split between the build and source trees.  To solve this we copy
the files to the import path when doing a build.  So no files are
copied on top of themselves all mixed module files have been relocated
to their module source directory.

Change-Id: I238af998a0f766e67ed6d0023e5ab4c2a4ea67af
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
22 files changed:
tests/auto/qml/qqmlmoduleplugin/.gitignore [new file with mode: 0644]
tests/auto/qml/qqmlmoduleplugin/nestedPlugin/nestedPlugin.pro
tests/auto/qml/qqmlmoduleplugin/nestedPlugin/qmldir [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/AutoTestQmlNestedPluginType/qmldir with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/plugin.2.1/plugin.2.1.pro
tests/auto/qml/qqmlmoduleplugin/plugin.2.1/qmldir [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/AutoTestQmlPluginType.2/qmldir with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/plugin.2/plugin.2.pro
tests/auto/qml/qqmlmoduleplugin/plugin.2/qmldir [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/AutoTestQmlPluginType.2.1/qmldir with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/plugin/plugin.pro
tests/auto/qml/qqmlmoduleplugin/plugin/qmldir [new file with mode: 0644]
tests/auto/qml/qqmlmoduleplugin/pluginMixed/Foo.qml [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/AutoTestQmlMixedPluginType/Foo.qml with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/pluginMixed/pluginMixed.pro
tests/auto/qml/qqmlmoduleplugin/pluginMixed/qmldir [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/AutoTestQmlMixedPluginType/qmldir with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/pluginVersion/pluginVersion.pro
tests/auto/qml/qqmlmoduleplugin/pluginVersion/qmldir [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/AutoTestQmlVersionPluginType/qmldir with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/pluginWithQmlFile/MyQmlFile.qml [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/AutoTestPluginWithQmlFile/MyQmlFile.qml with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/pluginWithQmlFile/pluginWithQmlFile.pro
tests/auto/qml/qqmlmoduleplugin/pluginWithQmlFile/qmldir [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/AutoTestPluginWithQmlFile/qmldir with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/pluginWrongCase/pluginWrongCase.pro
tests/auto/qml/qqmlmoduleplugin/pluginWrongCase/qmldir [moved from tests/auto/qml/qqmlmoduleplugin/imports/com/nokia/WrongCase/qmldir with 100% similarity]
tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp
tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.pro
tests/auto/shared/imports.pri [new file with mode: 0644]

diff --git a/tests/auto/qml/qqmlmoduleplugin/.gitignore b/tests/auto/qml/qqmlmoduleplugin/.gitignore
new file mode 100644 (file)
index 0000000..b458285
--- /dev/null
@@ -0,0 +1,2 @@
+imports/*/*/*
+!imports/com/nokia/PureQmlModule/*
index 94dc236..f69a832 100644 (file)
@@ -5,3 +5,8 @@ QT = core qml
 DESTDIR = ../imports/com/nokia/AutoTestQmlNestedPluginType
 
 QT += core-private gui-private qml-private
+
+IMPORT_FILES = \
+        qmldir
+
+include (../../../shared/imports.pri)
index ccb66ab..44196e4 100644 (file)
@@ -5,3 +5,8 @@ QT = core qml
 DESTDIR = ../imports/com/nokia/AutoTestQmlPluginType.2.1
 
 QT += core-private gui-private qml-private
+
+IMPORT_FILES = \
+        qmldir
+
+include (../../../shared/imports.pri)
index 7f3904f..7ecb33b 100644 (file)
@@ -5,3 +5,9 @@ QT = core qml
 DESTDIR = ../imports/com/nokia/AutoTestQmlPluginType.2
 
 QT += core-private gui-private qml-private
+
+IMPORT_DIR = DESTDIR
+IMPORT_FILES = \
+        qmldir
+
+include (../../../shared/imports.pri)
index dae8696..32ecc60 100644 (file)
@@ -5,3 +5,8 @@ QT = core qml
 DESTDIR = ../imports/com/nokia/AutoTestQmlPluginType
 
 QT += core-private gui-private qml-private
+
+IMPORT_FILES = \
+        qmldir
+
+include (../../../shared/imports.pri)
diff --git a/tests/auto/qml/qqmlmoduleplugin/plugin/qmldir b/tests/auto/qml/qqmlmoduleplugin/plugin/qmldir
new file mode 100644 (file)
index 0000000..0a8b5d4
--- /dev/null
@@ -0,0 +1 @@
+plugin plugin
index c0f314a..52f14b1 100644 (file)
@@ -5,3 +5,9 @@ QT = core qml
 DESTDIR = ../imports/com/nokia/AutoTestQmlMixedPluginType
 
 QT += core-private gui-private qml-private
+
+IMPORT_FILES = \
+        Foo.qml \
+        qmldir
+
+include (../../../shared/imports.pri)
index ba9e484..fe0878b 100644 (file)
@@ -5,3 +5,8 @@ QT = core qml
 DESTDIR = ../imports/com/nokia/AutoTestQmlVersionPluginType
 
 QT += core-private gui-private qml-private
+
+IMPORT_FILES = \
+        qmldir
+
+include (../../../shared/imports.pri)
index 15fe8d2..3fb6f99 100644 (file)
@@ -5,3 +5,9 @@ QT = core qml
 DESTDIR = ../imports/com/nokia/AutoTestPluginWithQmlFile
 
 QT += core-private gui-private qml-private
+
+IMPORT_FILES = \
+        qmldir \
+        MyQmlFile.qml
+
+include (../../../shared/imports.pri)
index d604613..858e9d9 100644 (file)
@@ -6,3 +6,8 @@ TARGET = Plugin
 DESTDIR = ../imports/com/nokia/WrongCase
 
 QT += core-private gui-private qml-private
+
+IMPORT_FILES = \
+        qmldir
+
+include (../../../shared/imports.pri)
index f6c1658..81aed01 100644 (file)
@@ -75,14 +75,18 @@ private slots:
 
 private:
     QString m_importsDirectory;
+    QString m_dataImportsDirectory;
 };
 
 void tst_qqmlmoduleplugin::initTestCase()
 {
     QQmlDataTest::initTestCase();
-    m_importsDirectory = directory() + QStringLiteral("/imports");
+    m_importsDirectory = QFINDTESTDATA(QStringLiteral("imports"));
     QVERIFY2(QFileInfo(m_importsDirectory).isDir(),
              qPrintable(QString::fromLatin1("Imports directory '%1' does not exist.").arg(m_importsDirectory)));
+    m_dataImportsDirectory = directory() + QStringLiteral("/imports");
+    QVERIFY2(QFileInfo(m_dataImportsDirectory).isDir(),
+             qPrintable(QString::fromLatin1("Imports directory '%1' does not exist.").arg(m_dataImportsDirectory)));
 }
 
 #define VERIFY_ERRORS(errorfile) \
@@ -222,7 +226,7 @@ void tst_qqmlmoduleplugin::remoteImportWithQuotedUrl()
 {
     TestHTTPServer server(SERVER_PORT);
     QVERIFY(server.isValid());
-    server.serveDirectory(m_importsDirectory);
+    server.serveDirectory(m_dataImportsDirectory);
 
     QQmlEngine engine;
     QQmlComponent component(&engine);
@@ -243,10 +247,10 @@ void tst_qqmlmoduleplugin::remoteImportWithUnquotedUri()
 {
     TestHTTPServer server(SERVER_PORT);
     QVERIFY(server.isValid());
-    server.serveDirectory(m_importsDirectory);
+    server.serveDirectory(m_dataImportsDirectory);
 
     QQmlEngine engine;
-    engine.addImportPath(m_importsDirectory);
+    engine.addImportPath(m_dataImportsDirectory);
     QQmlComponent component(&engine);
     component.setData("import com.nokia.PureQmlModule 1.0 \nComponentA { width: 300; ComponentB{} }", QUrl());
 
index 927d802..43bd112 100644 (file)
@@ -8,6 +8,6 @@ CONFIG -= app_bundle
 
 include (../../shared/util.pri)
 
-TESTDATA = data/* imports/*
+TESTDATA = data/* imports/* $$OUT_PWD/imports/*
 
 QT += core-private gui-private qml-private network testlib
diff --git a/tests/auto/shared/imports.pri b/tests/auto/shared/imports.pri
new file mode 100644 (file)
index 0000000..20e9bcb
--- /dev/null
@@ -0,0 +1,7 @@
+
+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