summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2023-04-26 14:07:54 +0200
committerTim Jenssen <tim.jenssen@qt.io>2023-04-26 20:13:48 +0000
commit527231c1e8ff67ed29807d6fb8f2de93a0569dfa (patch)
treee555302dd90ac0ad695ad72f52b4ec24616b76a9
parentc855a6bd480918ff3c34f765249d764a7d3ffd7d (diff)
downloadqt-creator-527231c1e8ff67ed29807d6fb8f2de93a0569dfa.tar.gz
QmlDesigner: Add versioning for core modules
Repush now with correct parent commit. Task-number: QDS-9786 Change-Id: I0e3b0f5c6e189231ef30b2e97a29151153af9bce Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h1
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp7
-rw-r--r--src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp29
-rw-r--r--src/plugins/qmldesigner/designercore/projectstorage/modulescanner.h7
-rw-r--r--src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp7
-rw-r--r--src/plugins/qmldesigner/qmldesignerexternaldependencies.h1
-rw-r--r--tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp1
-rw-r--r--tests/unit/unittest/data/modulescanner/Example/qmldir (renamed from tests/unit/unittest/data/modulescanner/qmldir)0
-rw-r--r--tests/unit/unittest/data/qml/QmlTime/qmldir4
-rw-r--r--tests/unit/unittest/data/qml/Qt/labs/animation/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt/labs/folderlistmodel/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt/labs/lottieqt/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt/labs/platform/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt/labs/qmlmodels/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt/labs/settings/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/Qt/labs/sharedimage/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt/labs/wavefrontmesh/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt/test/controls/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/Qt3D/Animation/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/Qt3D/Core/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt3D/Extras/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/Qt3D/Input/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt3D/Logic/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/Qt3D/Render/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/Qt5Compat/GraphicalEffects/private/qmldir21
-rw-r--r--tests/unit/unittest/data/qml/Qt5Compat/GraphicalEffects/qmldir60
-rw-r--r--tests/unit/unittest/data/qml/QtApplicationManager/Application/qmldir1
-rw-r--r--tests/unit/unittest/data/qml/QtApplicationManager/SystemUI/qmldir1
-rw-r--r--tests/unit/unittest/data/qml/QtApplicationManager/qmldir1
-rw-r--r--tests/unit/unittest/data/qml/QtCharts/qmldir10
-rw-r--r--tests/unit/unittest/data/qml/QtCore/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtDataVisualization/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtInsightTracker/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtInterfaceFramework/Media/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtInterfaceFramework/VehicleFunctions/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtInterfaceFramework/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtLocation/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtMultimedia/qmldir10
-rw-r--r--tests/unit/unittest/data/qml/QtOpcUa/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtPositioning/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQml/Base/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQml/Models/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQml/StateMachine/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQml/WorkerScript/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQml/XmlListModel/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQml/qmldir10
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Basic/impl/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Basic/qmldir131
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Fusion/impl/qmldir20
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Fusion/qmldir111
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Imagine/impl/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Imagine/qmldir108
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Material/impl/qmldir26
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Material/qmldir115
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Universal/impl/qmldir14
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/Universal/qmldir111
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/impl/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Controls/qmldir16
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Dialogs/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Dialogs/quickimpl/qmldir57
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Effects/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Layouts/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/LocalStorage/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/NativeStyle/qmldir38
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Particles/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Pdf/qmldir22
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Scene2D/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Scene3D/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Shapes/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Templates/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Timeline/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Components/qmldir103
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Layouts/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Hangul/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/OpenWNN/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Pinyin/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/TCIme/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Thai/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/qmldir12
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Settings/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Styles/Builtin/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Styles/qmldir30
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/qmldir25
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/Window/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQuick/tooling/qmldir23
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/AssetUtils/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/Effects/qmldir31
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/Helpers/impl/qmldir12
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/Helpers/qmldir21
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/MaterialEditor/qmldir13
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/ParticleEffects/qmldir10
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/Particles3D/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/Physics/Helpers/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/Physics/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/SpatialAudio/qmldir10
-rw-r--r--tests/unit/unittest/data/qml/QtQuick3D/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtRemoteObjects/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtScxml/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtSensors/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtTest/qmldir14
-rw-r--r--tests/unit/unittest/data/qml/QtTextToSpeech/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtVncServer/qmldir8
-rw-r--r--tests/unit/unittest/data/qml/QtWayland/Client/TextureSharing/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWayland/Compositor/IviApplication/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWayland/Compositor/PresentationTime/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWayland/Compositor/QtShell/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWayland/Compositor/TextureSharingExtension/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWayland/Compositor/WlShell/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWayland/Compositor/XdgShell/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWayland/Compositor/qmldir12
-rw-r--r--tests/unit/unittest/data/qml/QtWebChannel/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWebEngine/ControlsDelegates/qmldir36
-rw-r--r--tests/unit/unittest/data/qml/QtWebEngine/qmldir9
-rw-r--r--tests/unit/unittest/data/qml/QtWebSockets/qmldir7
-rw-r--r--tests/unit/unittest/data/qml/QtWebView/qmldir8
-rw-r--r--tests/unit/unittest/externaldependenciesmock.h45
-rw-r--r--tests/unit/unittest/modulescanner-test.cpp71
118 files changed, 1971 insertions, 13 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h b/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h
index 887f24ddce..b0409140fe 100644
--- a/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h
+++ b/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h
@@ -43,6 +43,7 @@ public:
virtual QStringList modulePaths() const = 0;
virtual QStringList projectModulePaths() const = 0;
virtual bool isQt6Project() const = 0;
+ virtual QString qtQuickVersion() const = 0;
};
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index 5bcaa4969f..493c834885 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -915,11 +915,14 @@ void TextToModelMerger::setupPossibleImports()
ModuleScanner moduleScanner{[&](QStringView moduleName) {
return skipModule(moduleName, skipModuleNames);
},
- VersionScanning::No};
+ VersionScanning::No,
+ m_rewriterView->externalDependencies()};
moduleScanner.scan(m_rewriterView->externalDependencies().modulePaths());
m_possibleModules = moduleScanner.modules();
} else {
- ModuleScanner moduleScanner{[&](QStringView) { return false; }, VersionScanning::Yes};
+ ModuleScanner moduleScanner{[&](QStringView) { return false; },
+ VersionScanning::Yes,
+ m_rewriterView->externalDependencies()};
m_possibleModules = createQt5Modules();
moduleScanner.scan(externalDependencies.projectModulePaths());
m_possibleModules.append(moduleScanner.modules());
diff --git a/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp b/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp
index 56822dce06..7a28338958 100644
--- a/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp
+++ b/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp
@@ -38,6 +38,26 @@ QString createVersion(const QMultiHash<QString, QQmlDirParser::Component> &compo
}
#endif
+constexpr auto coreModules = std::make_tuple(QStringView{u"QtQuick"},
+ QStringView{u"QtQuick.Controls"},
+ QStringView{u"QtQuick3D"},
+ QStringView{u"QtQuick3D.Helpers"},
+ QStringView{u"QtQuick3D.Particles3D"});
+
+bool isCoreVersion(QStringView moduleName)
+{
+ return std::apply([=](auto... coreModuleName) { return ((moduleName == coreModuleName) || ...); },
+ coreModules);
+}
+
+QString createCoreVersion(QStringView moduleName, ExternalDependenciesInterface &externalDependencies)
+{
+ if (isCoreVersion(moduleName))
+ return externalDependencies.qtQuickVersion();
+
+ return {};
+}
+
} // namespace
void ModuleScanner::scan(const QStringList &modulePaths)
@@ -49,7 +69,9 @@ void ModuleScanner::scan(const QStringList &modulePaths)
void ModuleScanner::scan([[maybe_unused]] std::string_view modulePath)
{
#ifdef QDS_HAS_QMLPRIVATE
- QDirIterator dirIterator{QString::fromUtf8(modulePath), QDir::Dirs, QDirIterator::Subdirectories};
+ QDirIterator dirIterator{QString::fromUtf8(modulePath),
+ QDir::Dirs | QDir::NoDotAndDotDot,
+ QDirIterator::Subdirectories};
while (dirIterator.hasNext()) {
auto directoryPath = dirIterator.next();
@@ -74,6 +96,11 @@ void ModuleScanner::scan([[maybe_unused]] std::string_view modulePath)
? createVersion(parser.components())
: QString{};
+ QString coreModuleVersion = createCoreVersion(moduleName, m_externalDependencies);
+
+ if (!coreModuleVersion.isEmpty())
+ version = coreModuleVersion;
+
m_modules.push_back(Import::createLibraryImport(moduleName, version));
}
}
diff --git a/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.h b/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.h
index 617428b0f5..64b672de8e 100644
--- a/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.h
+++ b/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.h
@@ -5,6 +5,7 @@
#include <qmldesignercorelib_global.h>
+#include <externaldependenciesinterface.h>
#include <import.h>
#include <optional>
@@ -18,10 +19,13 @@ class QMLDESIGNERCORE_EXPORT ModuleScanner
public:
using SkipFunction = std::function<bool(QStringView)>;
- ModuleScanner([[maybe_unused]] SkipFunction skip, [[maybe_unused]] VersionScanning versionScanning)
+ ModuleScanner([[maybe_unused]] SkipFunction skip,
+ [[maybe_unused]] VersionScanning versionScanning,
+ ExternalDependenciesInterface &externalDependencies)
#ifdef QDS_HAS_QMLPRIVATE
: m_skip{std::move(skip)}
, m_versionScanning{versionScanning}
+ , m_externalDependencies{externalDependencies}
#endif
{
m_modules.reserve(128);
@@ -39,6 +43,7 @@ private:
#ifdef QDS_HAS_QMLPRIVATE
SkipFunction m_skip;
VersionScanning m_versionScanning;
+ ExternalDependenciesInterface &m_externalDependencies;
#endif
};
diff --git a/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp b/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp
index d1eaae8d7e..ef844b4eae 100644
--- a/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp
+++ b/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp
@@ -267,4 +267,11 @@ bool ExternalDependencies::isQt6Project() const
return qmlBuildSystem && qmlBuildSystem->qt6Project();
}
+QString ExternalDependencies::qtQuickVersion() const
+{
+ auto [project, target, qmlBuildSystem] = activeProjectEntries();
+
+ return qmlBuildSystem ? qmlBuildSystem->versionQtQuick() : QString{};
+}
+
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/qmldesignerexternaldependencies.h b/src/plugins/qmldesigner/qmldesignerexternaldependencies.h
index 3c89dd4047..b577191913 100644
--- a/src/plugins/qmldesigner/qmldesignerexternaldependencies.h
+++ b/src/plugins/qmldesigner/qmldesignerexternaldependencies.h
@@ -39,6 +39,7 @@ public:
QStringList modulePaths() const override;
QStringList projectModulePaths() const override;
bool isQt6Project() const override;
+ QString qtQuickVersion() const override;
private:
const DesignerSettings &m_designerSettings;
diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
index e0f5ebda42..edbcd5554b 100644
--- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
+++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
@@ -163,6 +163,7 @@ public:
QStringList modulePaths() const override { return {}; }
QStringList projectModulePaths() const override { return {}; }
bool isQt6Project() const override { return {}; }
+ QString qtQuickVersion() const override { return {}; }
public:
QSettings qsettings;
diff --git a/tests/unit/unittest/data/modulescanner/qmldir b/tests/unit/unittest/data/modulescanner/Example/qmldir
index 88203422f0..88203422f0 100644
--- a/tests/unit/unittest/data/modulescanner/qmldir
+++ b/tests/unit/unittest/data/modulescanner/Example/qmldir
diff --git a/tests/unit/unittest/data/qml/QmlTime/qmldir b/tests/unit/unittest/data/qml/QmlTime/qmldir
new file mode 100644
index 0000000000..6610b42104
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QmlTime/qmldir
@@ -0,0 +1,4 @@
+module QmlTime
+typeinfo qmltime.qmltypes
+prefer :/qt-project.org/imports/QmlTime/
+
diff --git a/tests/unit/unittest/data/qml/Qt/labs/animation/qmldir b/tests/unit/unittest/data/qml/Qt/labs/animation/qmldir
new file mode 100644
index 0000000000..5f58f4bb3c
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/labs/animation/qmldir
@@ -0,0 +1,8 @@
+module Qt.labs.animation
+linktarget Qt6::labsanimationplugin
+optional plugin labsanimationplugin
+classname QtLabsAnimationPlugin
+typeinfo plugins.qmltypes
+depends QtQml
+prefer :/qt-project.org/imports/Qt/labs/animation/
+
diff --git a/tests/unit/unittest/data/qml/Qt/labs/folderlistmodel/qmldir b/tests/unit/unittest/data/qml/Qt/labs/folderlistmodel/qmldir
new file mode 100644
index 0000000000..5a61a7149d
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/labs/folderlistmodel/qmldir
@@ -0,0 +1,8 @@
+module Qt.labs.folderlistmodel
+linktarget Qt6::qmlfolderlistmodelplugin
+optional plugin qmlfolderlistmodelplugin
+classname QmlFolderListModelPlugin
+typeinfo plugins.qmltypes
+depends QtQml.Models auto
+prefer :/qt-project.org/imports/Qt/labs/folderlistmodel/
+
diff --git a/tests/unit/unittest/data/qml/Qt/labs/lottieqt/qmldir b/tests/unit/unittest/data/qml/Qt/labs/lottieqt/qmldir
new file mode 100644
index 0000000000..5d5eb586b3
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/labs/lottieqt/qmldir
@@ -0,0 +1,8 @@
+module Qt.labs.lottieqt
+linktarget Qt6::lottieqtplugin
+optional plugin lottieqtplugin
+classname BodymovinPlugin
+typeinfo plugins.qmltypes
+depends QtQuick
+prefer :/qt-project.org/imports/Qt/labs/lottieqt/
+
diff --git a/tests/unit/unittest/data/qml/Qt/labs/platform/qmldir b/tests/unit/unittest/data/qml/Qt/labs/platform/qmldir
new file mode 100644
index 0000000000..01800b393b
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/labs/platform/qmldir
@@ -0,0 +1,8 @@
+module Qt.labs.platform
+linktarget Qt6::qtlabsplatformplugin
+optional plugin qtlabsplatformplugin
+classname QtLabsPlatformPlugin
+typeinfo plugins.qmltypes
+depends QtQuick
+prefer :/qt-project.org/imports/Qt/labs/platform/
+
diff --git a/tests/unit/unittest/data/qml/Qt/labs/qmlmodels/qmldir b/tests/unit/unittest/data/qml/Qt/labs/qmlmodels/qmldir
new file mode 100644
index 0000000000..6b928f6776
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/labs/qmlmodels/qmldir
@@ -0,0 +1,8 @@
+module Qt.labs.qmlmodels
+linktarget Qt6::labsmodelsplugin
+optional plugin labsmodelsplugin
+classname QtQmlLabsModelsPlugin
+typeinfo plugins.qmltypes
+depends QtQml.Models auto
+prefer :/qt-project.org/imports/Qt/labs/qmlmodels/
+
diff --git a/tests/unit/unittest/data/qml/Qt/labs/settings/qmldir b/tests/unit/unittest/data/qml/Qt/labs/settings/qmldir
new file mode 100644
index 0000000000..86b0864288
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/labs/settings/qmldir
@@ -0,0 +1,7 @@
+module Qt.labs.settings
+linktarget Qt6::qmlsettingsplugin
+optional plugin qmlsettingsplugin
+classname QmlSettingsPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/Qt/labs/settings/
+
diff --git a/tests/unit/unittest/data/qml/Qt/labs/sharedimage/qmldir b/tests/unit/unittest/data/qml/Qt/labs/sharedimage/qmldir
new file mode 100644
index 0000000000..089730519c
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/labs/sharedimage/qmldir
@@ -0,0 +1,8 @@
+module Qt.labs.sharedimage
+linktarget Qt6::sharedimageplugin
+plugin sharedimageplugin
+classname QtQuickSharedImagePlugin
+static
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/Qt/labs/sharedimage/
+
diff --git a/tests/unit/unittest/data/qml/Qt/labs/wavefrontmesh/qmldir b/tests/unit/unittest/data/qml/Qt/labs/wavefrontmesh/qmldir
new file mode 100644
index 0000000000..35e8425429
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/labs/wavefrontmesh/qmldir
@@ -0,0 +1,8 @@
+module Qt.labs.wavefrontmesh
+linktarget Qt6::qmlwavefrontmeshplugin
+optional plugin qmlwavefrontmeshplugin
+classname QmlWavefrontMeshPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/Qt/labs/wavefrontmesh/
+
diff --git a/tests/unit/unittest/data/qml/Qt/test/controls/qmldir b/tests/unit/unittest/data/qml/Qt/test/controls/qmldir
new file mode 100644
index 0000000000..e2ee693d15
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt/test/controls/qmldir
@@ -0,0 +1,7 @@
+module Qt.test.controls
+linktarget Qt6::QuickControlsTestUtilsPrivateplugin
+optional plugin quickcontrolstestutilsprivateplugin
+classname Qt_test_controlsPlugin
+typeinfo QuickControlsTestUtilsPrivate.qmltypes
+prefer :/qt-project.org/imports/Qt/test/controls/
+
diff --git a/tests/unit/unittest/data/qml/Qt3D/Animation/qmldir b/tests/unit/unittest/data/qml/Qt3D/Animation/qmldir
new file mode 100644
index 0000000000..e122e29243
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt3D/Animation/qmldir
@@ -0,0 +1,9 @@
+module Qt3D.Animation
+linktarget Qt6::quick3danimationplugin
+plugin quick3danimationplugin
+classname Qt3DQuick3DAnimationPlugin
+typeinfo plugins.qmltypes
+depends QtQml auto
+depends Qt3D.Render auto
+prefer :/qt-project.org/imports/Qt3D/Animation/
+
diff --git a/tests/unit/unittest/data/qml/Qt3D/Core/qmldir b/tests/unit/unittest/data/qml/Qt3D/Core/qmldir
new file mode 100644
index 0000000000..7c8712f946
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt3D/Core/qmldir
@@ -0,0 +1,8 @@
+module Qt3D.Core
+linktarget Qt6::quick3dcoreplugin
+plugin quick3dcoreplugin
+classname Qt3DQuick3DCorePlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/Qt3D/Core/
+
diff --git a/tests/unit/unittest/data/qml/Qt3D/Extras/qmldir b/tests/unit/unittest/data/qml/Qt3D/Extras/qmldir
new file mode 100644
index 0000000000..c3e41f097f
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt3D/Extras/qmldir
@@ -0,0 +1,9 @@
+module Qt3D.Extras
+linktarget Qt6::quick3dextrasplugin
+plugin quick3dextrasplugin
+classname Qt3DQuick3DExtrasPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+depends Qt3D.Logic auto
+prefer :/qt-project.org/imports/Qt3D/Extras/
+
diff --git a/tests/unit/unittest/data/qml/Qt3D/Input/qmldir b/tests/unit/unittest/data/qml/Qt3D/Input/qmldir
new file mode 100644
index 0000000000..b34bf8caea
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt3D/Input/qmldir
@@ -0,0 +1,8 @@
+module Qt3D.Input
+linktarget Qt6::quick3dinputplugin
+plugin quick3dinputplugin
+classname Qt3DQuick3DInputPlugin
+typeinfo plugins.qmltypes
+depends QtQml auto
+prefer :/qt-project.org/imports/Qt3D/Input/
+
diff --git a/tests/unit/unittest/data/qml/Qt3D/Logic/qmldir b/tests/unit/unittest/data/qml/Qt3D/Logic/qmldir
new file mode 100644
index 0000000000..c61405b9da
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt3D/Logic/qmldir
@@ -0,0 +1,7 @@
+module Qt3D.Logic
+linktarget Qt6::quick3dlogicplugin
+plugin quick3dlogicplugin
+classname Qt3DQuick3DLogicPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/Qt3D/Logic/
+
diff --git a/tests/unit/unittest/data/qml/Qt3D/Render/qmldir b/tests/unit/unittest/data/qml/Qt3D/Render/qmldir
new file mode 100644
index 0000000000..fe3e762347
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt3D/Render/qmldir
@@ -0,0 +1,8 @@
+module Qt3D.Render
+linktarget Qt6::quick3drenderplugin
+plugin quick3drenderplugin
+classname Qt3DQuick3DRenderPlugin
+typeinfo plugins.qmltypes
+depends QtQml auto
+prefer :/qt-project.org/imports/Qt3D/Render/
+
diff --git a/tests/unit/unittest/data/qml/Qt5Compat/GraphicalEffects/private/qmldir b/tests/unit/unittest/data/qml/Qt5Compat/GraphicalEffects/private/qmldir
new file mode 100644
index 0000000000..b7d4329900
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt5Compat/GraphicalEffects/private/qmldir
@@ -0,0 +1,21 @@
+module Qt5Compat.GraphicalEffects.private
+linktarget Qt6::qtgraphicaleffectsprivate
+optional plugin qtgraphicaleffectsprivateplugin
+classname QtGraphicalEffectsPrivatePlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/Qt5Compat/GraphicalEffects/private/
+DropShadowBase 6.0 DropShadowBase.qml
+DropShadowBase 1.0 DropShadowBase.qml
+FastGlow 6.0 FastGlow.qml
+FastGlow 1.0 FastGlow.qml
+FastInnerShadow 6.0 FastInnerShadow.qml
+FastInnerShadow 1.0 FastInnerShadow.qml
+GaussianDirectionalBlur 6.0 GaussianDirectionalBlur.qml
+GaussianDirectionalBlur 1.0 GaussianDirectionalBlur.qml
+GaussianGlow 6.0 GaussianGlow.qml
+GaussianGlow 1.0 GaussianGlow.qml
+GaussianInnerShadow 6.0 GaussianInnerShadow.qml
+GaussianInnerShadow 1.0 GaussianInnerShadow.qml
+GaussianMaskedBlur 6.0 GaussianMaskedBlur.qml
+GaussianMaskedBlur 1.0 GaussianMaskedBlur.qml
+
diff --git a/tests/unit/unittest/data/qml/Qt5Compat/GraphicalEffects/qmldir b/tests/unit/unittest/data/qml/Qt5Compat/GraphicalEffects/qmldir
new file mode 100644
index 0000000000..60238eaa0b
--- /dev/null
+++ b/tests/unit/unittest/data/qml/Qt5Compat/GraphicalEffects/qmldir
@@ -0,0 +1,60 @@
+module Qt5Compat.GraphicalEffects
+linktarget Qt6::qtgraphicaleffectsplugin
+plugin qtgraphicaleffectsplugin
+classname QtGraphicalEffectsPlugin
+designersupported
+typeinfo plugins.qmltypes
+depends Qt5Compat.GraphicalEffects.private
+depends QtQuick.Window
+prefer :/qt-project.org/imports/Qt5Compat/GraphicalEffects/
+Blend 6.0 Blend.qml
+Blend 1.0 Blend.qml
+BrightnessContrast 6.0 BrightnessContrast.qml
+BrightnessContrast 1.0 BrightnessContrast.qml
+ColorOverlay 6.0 ColorOverlay.qml
+ColorOverlay 1.0 ColorOverlay.qml
+Colorize 6.0 Colorize.qml
+Colorize 1.0 Colorize.qml
+ConicalGradient 6.0 ConicalGradient.qml
+ConicalGradient 1.0 ConicalGradient.qml
+Desaturate 6.0 Desaturate.qml
+Desaturate 1.0 Desaturate.qml
+DirectionalBlur 6.0 DirectionalBlur.qml
+DirectionalBlur 1.0 DirectionalBlur.qml
+Displace 6.0 Displace.qml
+Displace 1.0 Displace.qml
+DropShadow 6.0 DropShadow.qml
+DropShadow 1.0 DropShadow.qml
+FastBlur 6.0 FastBlur.qml
+FastBlur 1.0 FastBlur.qml
+GammaAdjust 6.0 GammaAdjust.qml
+GammaAdjust 1.0 GammaAdjust.qml
+GaussianBlur 6.0 GaussianBlur.qml
+GaussianBlur 1.0 GaussianBlur.qml
+Glow 6.0 Glow.qml
+Glow 1.0 Glow.qml
+HueSaturation 6.0 HueSaturation.qml
+HueSaturation 1.0 HueSaturation.qml
+InnerShadow 6.0 InnerShadow.qml
+InnerShadow 1.0 InnerShadow.qml
+LevelAdjust 6.0 LevelAdjust.qml
+LevelAdjust 1.0 LevelAdjust.qml
+LinearGradient 6.0 LinearGradient.qml
+LinearGradient 1.0 LinearGradient.qml
+MaskedBlur 6.0 MaskedBlur.qml
+MaskedBlur 1.0 MaskedBlur.qml
+OpacityMask 6.0 OpacityMask.qml
+OpacityMask 1.0 OpacityMask.qml
+RadialBlur 6.0 RadialBlur.qml
+RadialBlur 1.0 RadialBlur.qml
+RadialGradient 6.0 RadialGradient.qml
+RadialGradient 1.0 RadialGradient.qml
+RectangularGlow 6.0 RectangularGlow.qml
+RectangularGlow 1.0 RectangularGlow.qml
+RecursiveBlur 6.0 RecursiveBlur.qml
+RecursiveBlur 1.0 RecursiveBlur.qml
+ThresholdMask 6.0 ThresholdMask.qml
+ThresholdMask 1.0 ThresholdMask.qml
+ZoomBlur 6.0 ZoomBlur.qml
+ZoomBlur 1.0 ZoomBlur.qml
+
diff --git a/tests/unit/unittest/data/qml/QtApplicationManager/Application/qmldir b/tests/unit/unittest/data/qml/QtApplicationManager/Application/qmldir
new file mode 100644
index 0000000000..4ed2cd6755
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtApplicationManager/Application/qmldir
@@ -0,0 +1 @@
+typeinfo plugins.qmltypes
diff --git a/tests/unit/unittest/data/qml/QtApplicationManager/SystemUI/qmldir b/tests/unit/unittest/data/qml/QtApplicationManager/SystemUI/qmldir
new file mode 100644
index 0000000000..4ed2cd6755
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtApplicationManager/SystemUI/qmldir
@@ -0,0 +1 @@
+typeinfo plugins.qmltypes
diff --git a/tests/unit/unittest/data/qml/QtApplicationManager/qmldir b/tests/unit/unittest/data/qml/QtApplicationManager/qmldir
new file mode 100644
index 0000000000..4ed2cd6755
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtApplicationManager/qmldir
@@ -0,0 +1 @@
+typeinfo plugins.qmltypes
diff --git a/tests/unit/unittest/data/qml/QtCharts/qmldir b/tests/unit/unittest/data/qml/QtCharts/qmldir
new file mode 100644
index 0000000000..42d0049046
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtCharts/qmldir
@@ -0,0 +1,10 @@
+module QtCharts
+linktarget Qt6::qtchartsqml2
+optional plugin qtchartsqml2plugin
+classname QtChartsQml2Plugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQuick
+depends QtCharts
+prefer :/qt-project.org/imports/QtCharts/
+
diff --git a/tests/unit/unittest/data/qml/QtCore/qmldir b/tests/unit/unittest/data/qml/QtCore/qmldir
new file mode 100644
index 0000000000..d652bb201b
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtCore/qmldir
@@ -0,0 +1,9 @@
+module QtCore
+linktarget Qt6::qtqmlcoreplugin
+optional plugin qtqmlcoreplugin
+classname QtQmlCorePlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQml auto
+prefer :/qt-project.org/imports/QtCore/
+
diff --git a/tests/unit/unittest/data/qml/QtDataVisualization/qmldir b/tests/unit/unittest/data/qml/QtDataVisualization/qmldir
new file mode 100644
index 0000000000..714749cb3c
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtDataVisualization/qmldir
@@ -0,0 +1,8 @@
+module QtDataVisualization
+linktarget Qt6::DataVisualizationQmlplugin
+optional plugin datavisualizationqmlplugin
+classname QtDataVisualizationPlugin
+typeinfo plugins.qmltypes
+depends QtQuick
+prefer :/qt-project.org/imports/QtDataVisualization/
+
diff --git a/tests/unit/unittest/data/qml/QtInsightTracker/qmldir b/tests/unit/unittest/data/qml/QtInsightTracker/qmldir
new file mode 100644
index 0000000000..e9126a4513
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtInsightTracker/qmldir
@@ -0,0 +1,7 @@
+module QtInsightTracker
+linktarget Qt6::InsightTrackerQmlplugin
+optional plugin insighttrackerqmlplugin
+classname QtInsightTrackerPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtInsightTracker/
+
diff --git a/tests/unit/unittest/data/qml/QtInterfaceFramework/Media/qmldir b/tests/unit/unittest/data/qml/QtInterfaceFramework/Media/qmldir
new file mode 100644
index 0000000000..bcd1c145e0
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtInterfaceFramework/Media/qmldir
@@ -0,0 +1,8 @@
+module QtInterfaceFramework.Media
+linktarget Qt6::IfMediaplugin
+optional plugin ifmediaplugin
+classname QIfMediaPlugin
+typeinfo plugins.qmltypes
+import QtInterfaceFramework auto
+prefer :/qt-project.org/imports/QtInterfaceFramework/Media/
+
diff --git a/tests/unit/unittest/data/qml/QtInterfaceFramework/VehicleFunctions/qmldir b/tests/unit/unittest/data/qml/QtInterfaceFramework/VehicleFunctions/qmldir
new file mode 100644
index 0000000000..009e335aea
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtInterfaceFramework/VehicleFunctions/qmldir
@@ -0,0 +1,8 @@
+module QtInterfaceFramework.VehicleFunctions
+linktarget Qt6::qtifvehiclefunctionsplugin
+optional plugin qtifvehiclefunctionsplugin
+classname QtIfVehicleFunctionsPlugin
+typeinfo IfVehicleFunctions.qmltypes
+import QtInterfaceFramework auto
+prefer :/qt-project.org/imports/QtInterfaceFramework/VehicleFunctions/
+
diff --git a/tests/unit/unittest/data/qml/QtInterfaceFramework/qmldir b/tests/unit/unittest/data/qml/QtInterfaceFramework/qmldir
new file mode 100644
index 0000000000..727eaf99b7
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtInterfaceFramework/qmldir
@@ -0,0 +1,7 @@
+module QtInterfaceFramework
+linktarget Qt6::InterfaceFrameworkplugin
+optional plugin interfaceframeworkplugin
+classname QtInterfaceFrameworkPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtInterfaceFramework/
+
diff --git a/tests/unit/unittest/data/qml/QtLocation/qmldir b/tests/unit/unittest/data/qml/QtLocation/qmldir
new file mode 100644
index 0000000000..207cd8959b
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtLocation/qmldir
@@ -0,0 +1,8 @@
+module QtLocation
+linktarget Qt6::declarative_location
+plugin declarative_locationplugin
+classname QtLocationDeclarativeModule
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtLocation/
+MapView 6.0 MapView.qml
+
diff --git a/tests/unit/unittest/data/qml/QtMultimedia/qmldir b/tests/unit/unittest/data/qml/QtMultimedia/qmldir
new file mode 100644
index 0000000000..82f64177eb
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtMultimedia/qmldir
@@ -0,0 +1,10 @@
+module QtMultimedia
+linktarget Qt6::quickmultimedia
+plugin quickmultimediaplugin
+classname QMultimediaQuickModule
+typeinfo plugins.qmltypes
+depends QtQuick
+prefer :/qt-project.org/imports/QtMultimedia/
+Video 6.0 Video.qml
+Video 5.0 Video.qml
+
diff --git a/tests/unit/unittest/data/qml/QtOpcUa/qmldir b/tests/unit/unittest/data/qml/QtOpcUa/qmldir
new file mode 100644
index 0000000000..4d74523129
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtOpcUa/qmldir
@@ -0,0 +1,8 @@
+module QtOpcUa
+linktarget Qt6::DeclarativeOpcuaplugin
+optional plugin declarativeopcuaplugin
+classname QtOpcUaPlugin
+typeinfo plugins.qmltypes
+depends QtQuick
+prefer :/qt-project.org/imports/QtOpcUa/
+
diff --git a/tests/unit/unittest/data/qml/QtPositioning/qmldir b/tests/unit/unittest/data/qml/QtPositioning/qmldir
new file mode 100644
index 0000000000..9ae0891d08
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtPositioning/qmldir
@@ -0,0 +1,8 @@
+module QtPositioning
+linktarget Qt6::positioningquickplugin
+plugin positioningquickplugin
+classname QtPositioningDeclarativeModule
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtPositioning/
+
diff --git a/tests/unit/unittest/data/qml/QtQml/Base/qmldir b/tests/unit/unittest/data/qml/QtQml/Base/qmldir
new file mode 100644
index 0000000000..7f2da0f0d8
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQml/Base/qmldir
@@ -0,0 +1,9 @@
+module QtQml.Base
+linktarget Qt6::qmlplugin
+optional plugin qmlplugin
+classname QtQmlPlugin
+designersupported
+system
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQml/Base/
+
diff --git a/tests/unit/unittest/data/qml/QtQml/Models/qmldir b/tests/unit/unittest/data/qml/QtQml/Models/qmldir
new file mode 100644
index 0000000000..60eac9bf19
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQml/Models/qmldir
@@ -0,0 +1,9 @@
+module QtQml.Models
+linktarget Qt6::modelsplugin
+optional plugin modelsplugin
+classname QtQmlModelsPlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQml.Base auto
+prefer :/qt-project.org/imports/QtQml/Models/
+
diff --git a/tests/unit/unittest/data/qml/QtQml/StateMachine/qmldir b/tests/unit/unittest/data/qml/QtQml/StateMachine/qmldir
new file mode 100644
index 0000000000..943791ea15
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQml/StateMachine/qmldir
@@ -0,0 +1,8 @@
+module QtQml.StateMachine
+linktarget Qt6::qtqmlstatemachine
+optional plugin qtqmlstatemachineplugin
+classname QtQmlStateMachinePlugin
+typeinfo plugins.qmltypes
+depends QtQml
+prefer :/qt-project.org/imports/QtQml/StateMachine/
+
diff --git a/tests/unit/unittest/data/qml/QtQml/WorkerScript/qmldir b/tests/unit/unittest/data/qml/QtQml/WorkerScript/qmldir
new file mode 100644
index 0000000000..a4de5f38b2
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQml/WorkerScript/qmldir
@@ -0,0 +1,9 @@
+module QtQml.WorkerScript
+linktarget Qt6::workerscriptplugin
+optional plugin workerscriptplugin
+classname QtQmlWorkerScriptPlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQml.Base auto
+prefer :/qt-project.org/imports/QtQml/WorkerScript/
+
diff --git a/tests/unit/unittest/data/qml/QtQml/XmlListModel/qmldir b/tests/unit/unittest/data/qml/QtQml/XmlListModel/qmldir
new file mode 100644
index 0000000000..f04f990ef1
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQml/XmlListModel/qmldir
@@ -0,0 +1,8 @@
+module QtQml.XmlListModel
+linktarget Qt6::qmlxmllistmodelplugin
+optional plugin qmlxmllistmodelplugin
+classname QtQmlXmlListModelPlugin
+typeinfo plugins.qmltypes
+depends QtQml auto
+prefer :/qt-project.org/imports/QtQml/XmlListModel/
+
diff --git a/tests/unit/unittest/data/qml/QtQml/qmldir b/tests/unit/unittest/data/qml/QtQml/qmldir
new file mode 100644
index 0000000000..ae6977b9d9
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQml/qmldir
@@ -0,0 +1,10 @@
+module QtQml
+linktarget Qt6::QmlMeta
+optional plugin qmlmetaplugin
+classname QtQmlMetaPlugin
+designersupported
+import QtQml.Base auto
+import QtQml.Models auto
+import QtQml.WorkerScript auto
+prefer :/qt-project.org/imports/QtQml/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Basic/impl/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Basic/impl/qmldir
new file mode 100644
index 0000000000..d09bc6a193
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Basic/impl/qmldir
@@ -0,0 +1,7 @@
+module QtQuick.Controls.Basic.impl
+linktarget Qt6::qtquickcontrols2basicstyleimplplugin
+plugin qtquickcontrols2basicstyleimplplugin
+classname QtQuickControls2BasicStyleImplPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQuick/Controls/Basic/impl/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Basic/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Basic/qmldir
new file mode 100644
index 0000000000..8460bd3bf2
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Basic/qmldir
@@ -0,0 +1,131 @@
+module QtQuick.Controls.Basic
+linktarget Qt6::qtquickcontrols2basicstyleplugin
+plugin qtquickcontrols2basicstyleplugin
+classname QtQuickControls2BasicStylePlugin
+typeinfo plugins.qmltypes
+import QtQuick.Controls.impl auto
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Basic/
+AbstractButton 6.0 AbstractButton.qml
+AbstractButton 2.0 AbstractButton.qml
+Action 2.3 Action.qml
+Action 6.0 Action.qml
+ActionGroup 2.3 ActionGroup.qml
+ActionGroup 6.0 ActionGroup.qml
+ApplicationWindow 6.0 ApplicationWindow.qml
+ApplicationWindow 2.0 ApplicationWindow.qml
+BusyIndicator 6.0 BusyIndicator.qml
+BusyIndicator 2.0 BusyIndicator.qml
+Button 6.0 Button.qml
+Button 2.0 Button.qml
+ButtonGroup 6.0 ButtonGroup.qml
+ButtonGroup 2.0 ButtonGroup.qml
+CheckBox 6.0 CheckBox.qml
+CheckBox 2.0 CheckBox.qml
+CheckDelegate 6.0 CheckDelegate.qml
+CheckDelegate 2.0 CheckDelegate.qml
+ComboBox 6.0 ComboBox.qml
+ComboBox 2.0 ComboBox.qml
+Container 6.0 Container.qml
+Container 2.0 Container.qml
+Control 6.0 Control.qml
+Control 2.0 Control.qml
+DelayButton 2.2 DelayButton.qml
+DelayButton 6.0 DelayButton.qml
+Dial 6.0 Dial.qml
+Dial 2.0 Dial.qml
+Dialog 2.1 Dialog.qml
+Dialog 6.0 Dialog.qml
+DialogButtonBox 2.1 DialogButtonBox.qml
+DialogButtonBox 6.0 DialogButtonBox.qml
+Drawer 6.0 Drawer.qml
+Drawer 2.0 Drawer.qml
+Frame 6.0 Frame.qml
+Frame 2.0 Frame.qml
+GroupBox 6.0 GroupBox.qml
+GroupBox 2.0 GroupBox.qml
+HorizontalHeaderView 2.15 HorizontalHeaderView.qml
+HorizontalHeaderView 6.0 HorizontalHeaderView.qml
+ItemDelegate 6.0 ItemDelegate.qml
+ItemDelegate 2.0 ItemDelegate.qml
+Label 6.0 Label.qml
+Label 2.0 Label.qml
+Menu 6.0 Menu.qml
+Menu 2.0 Menu.qml
+MenuBar 2.3 MenuBar.qml
+MenuBar 6.0 MenuBar.qml
+MenuBarItem 2.3 MenuBarItem.qml
+MenuBarItem 6.0 MenuBarItem.qml
+MenuItem 6.0 MenuItem.qml
+MenuItem 2.0 MenuItem.qml
+MenuSeparator 2.1 MenuSeparator.qml
+MenuSeparator 6.0 MenuSeparator.qml
+Page 6.0 Page.qml
+Page 2.0 Page.qml
+PageIndicator 6.0 PageIndicator.qml
+PageIndicator 2.0 PageIndicator.qml
+Pane 6.0 Pane.qml
+Pane 2.0 Pane.qml
+Popup 6.0 Popup.qml
+Popup 2.0 Popup.qml
+ProgressBar 6.0 ProgressBar.qml
+ProgressBar 2.0 ProgressBar.qml
+RadioButton 6.0 RadioButton.qml
+RadioButton 2.0 RadioButton.qml
+RadioDelegate 6.0 RadioDelegate.qml
+RadioDelegate 2.0 RadioDelegate.qml
+RangeSlider 6.0 RangeSlider.qml
+RangeSlider 2.0 RangeSlider.qml
+RoundButton 2.1 RoundButton.qml
+RoundButton 6.0 RoundButton.qml
+ScrollBar 6.0 ScrollBar.qml
+ScrollBar 2.0 ScrollBar.qml
+ScrollIndicator 6.0 ScrollIndicator.qml
+ScrollIndicator 2.0 ScrollIndicator.qml
+ScrollView 2.2 ScrollView.qml
+ScrollView 6.0 ScrollView.qml
+SelectionRectangle 6.2 SelectionRectangle.qml
+Slider 6.0 Slider.qml
+Slider 2.0 Slider.qml
+SpinBox 6.0 SpinBox.qml
+SpinBox 2.0 SpinBox.qml
+SplitView 2.13 SplitView.qml
+SplitView 6.0 SplitView.qml
+StackView 6.0 StackView.qml
+StackView 2.0 StackView.qml
+SwipeDelegate 6.0 SwipeDelegate.qml
+SwipeDelegate 2.0 SwipeDelegate.qml
+Switch 6.0 Switch.qml
+Switch 2.0 Switch.qml
+SwitchDelegate 6.0 SwitchDelegate.qml
+SwitchDelegate 2.0 SwitchDelegate.qml
+SwipeView 6.0 SwipeView.qml
+SwipeView 2.0 SwipeView.qml
+TabBar 6.0 TabBar.qml
+TabBar 2.0 TabBar.qml
+TabButton 6.0 TabButton.qml
+TabButton 2.0 TabButton.qml
+TextArea 6.0 TextArea.qml
+TextArea 2.0 TextArea.qml
+TextField 6.0 TextField.qml
+TextField 2.0 TextField.qml
+ToolBar 6.0 ToolBar.qml
+ToolBar 2.0 ToolBar.qml
+ToolButton 6.0 ToolButton.qml
+ToolButton 2.0 ToolButton.qml
+ToolSeparator 2.1 ToolSeparator.qml
+ToolSeparator 6.0 ToolSeparator.qml
+ToolTip 6.0 ToolTip.qml
+ToolTip 2.0 ToolTip.qml
+Tumbler 6.0 Tumbler.qml
+Tumbler 2.0 Tumbler.qml
+VerticalHeaderView 2.15 VerticalHeaderView.qml
+VerticalHeaderView 6.0 VerticalHeaderView.qml
+singleton Calendar 6.3 Calendar.qml
+CalendarModel 6.3 CalendarModel.qml
+DayOfWeekRow 6.3 DayOfWeekRow.qml
+MonthGrid 6.3 MonthGrid.qml
+WeekNumberColumn 6.3 WeekNumberColumn.qml
+TreeViewDelegate 6.0 TreeViewDelegate.qml
+TreeViewDelegate 2.0 TreeViewDelegate.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Fusion/impl/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Fusion/impl/qmldir
new file mode 100644
index 0000000000..69e0bec723
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Fusion/impl/qmldir
@@ -0,0 +1,20 @@
+module QtQuick.Controls.Fusion.impl
+linktarget Qt6::qtquickcontrols2fusionstyleimplplugin
+plugin qtquickcontrols2fusionstyleimplplugin
+classname QtQuickControls2FusionStyleImplPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Fusion/impl/
+ButtonPanel 6.0 ButtonPanel.qml
+ButtonPanel 2.0 ButtonPanel.qml
+CheckIndicator 6.0 CheckIndicator.qml
+CheckIndicator 2.0 CheckIndicator.qml
+RadioIndicator 6.0 RadioIndicator.qml
+RadioIndicator 2.0 RadioIndicator.qml
+SliderGroove 6.0 SliderGroove.qml
+SliderGroove 2.0 SliderGroove.qml
+SliderHandle 6.0 SliderHandle.qml
+SliderHandle 2.0 SliderHandle.qml
+SwitchIndicator 6.0 SwitchIndicator.qml
+SwitchIndicator 2.0 SwitchIndicator.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Fusion/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Fusion/qmldir
new file mode 100644
index 0000000000..37e8a1407a
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Fusion/qmldir
@@ -0,0 +1,111 @@
+module QtQuick.Controls.Fusion
+linktarget Qt6::qtquickcontrols2fusionstyleplugin
+plugin qtquickcontrols2fusionstyleplugin
+classname QtQuickControls2FusionStylePlugin
+typeinfo plugins.qmltypes
+import QtQuick.Controls.Basic auto
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Fusion/
+ApplicationWindow 6.0 ApplicationWindow.qml
+ApplicationWindow 2.0 ApplicationWindow.qml
+BusyIndicator 6.0 BusyIndicator.qml
+BusyIndicator 2.0 BusyIndicator.qml
+Button 6.0 Button.qml
+Button 2.0 Button.qml
+CheckBox 6.0 CheckBox.qml
+CheckBox 2.0 CheckBox.qml
+CheckDelegate 6.0 CheckDelegate.qml
+CheckDelegate 2.0 CheckDelegate.qml
+ComboBox 6.0 ComboBox.qml
+ComboBox 2.0 ComboBox.qml
+DelayButton 2.2 DelayButton.qml
+DelayButton 6.0 DelayButton.qml
+Dial 6.0 Dial.qml
+Dial 2.0 Dial.qml
+Dialog 2.1 Dialog.qml
+Dialog 6.0 Dialog.qml
+DialogButtonBox 2.1 DialogButtonBox.qml
+DialogButtonBox 6.0 DialogButtonBox.qml
+Drawer 6.0 Drawer.qml
+Drawer 2.0 Drawer.qml
+Frame 6.0 Frame.qml
+Frame 2.0 Frame.qml
+GroupBox 6.0 GroupBox.qml
+GroupBox 2.0 GroupBox.qml
+HorizontalHeaderView 2.15 HorizontalHeaderView.qml
+HorizontalHeaderView 6.0 HorizontalHeaderView.qml
+ItemDelegate 6.0 ItemDelegate.qml
+ItemDelegate 2.0 ItemDelegate.qml
+Label 6.0 Label.qml
+Label 2.0 Label.qml
+Menu 6.0 Menu.qml
+Menu 2.0 Menu.qml
+MenuBar 2.3 MenuBar.qml
+MenuBar 6.0 MenuBar.qml
+MenuBarItem 2.3 MenuBarItem.qml
+MenuBarItem 6.0 MenuBarItem.qml
+MenuItem 6.0 MenuItem.qml
+MenuItem 2.0 MenuItem.qml
+MenuSeparator 2.1 MenuSeparator.qml
+MenuSeparator 6.0 MenuSeparator.qml
+Page 6.0 Page.qml
+Page 2.0 Page.qml
+PageIndicator 6.0 PageIndicator.qml
+PageIndicator 2.0 PageIndicator.qml
+Pane 6.0 Pane.qml
+Pane 2.0 Pane.qml
+Popup 6.0 Popup.qml
+Popup 2.0 Popup.qml
+ProgressBar 6.0 ProgressBar.qml
+ProgressBar 2.0 ProgressBar.qml
+RadioButton 6.0 RadioButton.qml
+RadioButton 2.0 RadioButton.qml
+RadioDelegate 6.0 RadioDelegate.qml
+RadioDelegate 2.0 RadioDelegate.qml
+RangeSlider 6.0 RangeSlider.qml
+RangeSlider 2.0 RangeSlider.qml
+RoundButton 2.1 RoundButton.qml
+RoundButton 6.0 RoundButton.qml
+ScrollBar 6.0 ScrollBar.qml
+ScrollBar 2.0 ScrollBar.qml
+ScrollView 6.0 ScrollView.qml
+ScrollView 2.0 ScrollView.qml
+ScrollIndicator 6.0 ScrollIndicator.qml
+ScrollIndicator 2.0 ScrollIndicator.qml
+SelectionRectangle 6.0 SelectionRectangle.qml
+SelectionRectangle 2.0 SelectionRectangle.qml
+Slider 6.0 Slider.qml
+Slider 2.0 Slider.qml
+SpinBox 6.0 SpinBox.qml
+SpinBox 2.0 SpinBox.qml
+SplitView 2.13 SplitView.qml
+SplitView 6.0 SplitView.qml
+SwipeDelegate 6.0 SwipeDelegate.qml
+SwipeDelegate 2.0 SwipeDelegate.qml
+SwitchDelegate 6.0 SwitchDelegate.qml
+SwitchDelegate 2.0 SwitchDelegate.qml
+Switch 6.0 Switch.qml
+Switch 2.0 Switch.qml
+TabBar 6.0 TabBar.qml
+TabBar 2.0 TabBar.qml
+TabButton 6.0 TabButton.qml
+TabButton 2.0 TabButton.qml
+TextArea 6.0 TextArea.qml
+TextArea 2.0 TextArea.qml
+TextField 6.0 TextField.qml
+TextField 2.0 TextField.qml
+ToolBar 6.0 ToolBar.qml
+ToolBar 2.0 ToolBar.qml
+ToolButton 6.0 ToolButton.qml
+ToolButton 2.0 ToolButton.qml
+ToolSeparator 2.1 ToolSeparator.qml
+ToolSeparator 6.0 ToolSeparator.qml
+ToolTip 6.0 ToolTip.qml
+ToolTip 2.0 ToolTip.qml
+TreeViewDelegate 6.0 TreeViewDelegate.qml
+TreeViewDelegate 2.0 TreeViewDelegate.qml
+Tumbler 6.0 Tumbler.qml
+Tumbler 2.0 Tumbler.qml
+VerticalHeaderView 2.15 VerticalHeaderView.qml
+VerticalHeaderView 6.0 VerticalHeaderView.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Imagine/impl/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Imagine/impl/qmldir
new file mode 100644
index 0000000000..7cdf5d634b
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Imagine/impl/qmldir
@@ -0,0 +1,9 @@
+module QtQuick.Controls.Imagine.impl
+linktarget Qt6::qtquickcontrols2imaginestyleimplplugin
+plugin qtquickcontrols2imaginestyleimplplugin
+classname QtQuickControls2ImagineStyleImplPlugin
+typeinfo qtquickcontrols2imaginestyleimplplugin.qmltypes
+import QtQuick.Controls.impl auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Imagine/impl/
+OpacityMask 6.0 OpacityMask.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Imagine/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Imagine/qmldir
new file mode 100644
index 0000000000..adce0e5148
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Imagine/qmldir
@@ -0,0 +1,108 @@
+module QtQuick.Controls.Imagine
+linktarget Qt6::qtquickcontrols2imaginestyleplugin
+plugin qtquickcontrols2imaginestyleplugin
+classname QtQuickControls2ImagineStylePlugin
+typeinfo plugins.qmltypes
+import QtQuick.Controls.Basic auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Imagine/
+ApplicationWindow 6.0 ApplicationWindow.qml
+ApplicationWindow 2.0 ApplicationWindow.qml
+BusyIndicator 6.0 BusyIndicator.qml
+BusyIndicator 2.0 BusyIndicator.qml
+Button 6.0 Button.qml
+Button 2.0 Button.qml
+CheckBox 6.0 CheckBox.qml
+CheckBox 2.0 CheckBox.qml
+CheckDelegate 6.0 CheckDelegate.qml
+CheckDelegate 2.0 CheckDelegate.qml
+ComboBox 6.0 ComboBox.qml
+ComboBox 2.0 ComboBox.qml
+DelayButton 2.2 DelayButton.qml
+DelayButton 6.0 DelayButton.qml
+Dial 6.0 Dial.qml
+Dial 2.0 Dial.qml
+Dialog 2.1 Dialog.qml
+Dialog 6.0 Dialog.qml
+DialogButtonBox 2.1 DialogButtonBox.qml
+DialogButtonBox 6.0 DialogButtonBox.qml
+Drawer 6.0 Drawer.qml
+Drawer 2.0 Drawer.qml
+Frame 6.0 Frame.qml
+Frame 2.0 Frame.qml
+GroupBox 6.0 GroupBox.qml
+GroupBox 2.0 GroupBox.qml
+HorizontalHeaderView 2.15 HorizontalHeaderView.qml
+HorizontalHeaderView 6.0 HorizontalHeaderView.qml
+ItemDelegate 6.0 ItemDelegate.qml
+ItemDelegate 2.0 ItemDelegate.qml
+Label 6.0 Label.qml
+Label 2.0 Label.qml
+Menu 6.0 Menu.qml
+Menu 2.0 Menu.qml
+MenuItem 6.0 MenuItem.qml
+MenuItem 2.0 MenuItem.qml
+MenuSeparator 2.1 MenuSeparator.qml
+MenuSeparator 6.0 MenuSeparator.qml
+PageIndicator 6.0 PageIndicator.qml
+PageIndicator 2.0 PageIndicator.qml
+Page 6.0 Page.qml
+Page 2.0 Page.qml
+Pane 6.0 Pane.qml
+Pane 2.0 Pane.qml
+Popup 6.0 Popup.qml
+Popup 2.0 Popup.qml
+ProgressBar 6.0 ProgressBar.qml
+ProgressBar 2.0 ProgressBar.qml
+RadioButton 6.0 RadioButton.qml
+RadioButton 2.0 RadioButton.qml
+RadioDelegate 6.0 RadioDelegate.qml
+RadioDelegate 2.0 RadioDelegate.qml
+RangeSlider 6.0 RangeSlider.qml
+RangeSlider 2.0 RangeSlider.qml
+RoundButton 2.1 RoundButton.qml
+RoundButton 6.0 RoundButton.qml
+ScrollView 6.0 ScrollView.qml
+ScrollView 2.0 ScrollView.qml
+ScrollBar 6.0 ScrollBar.qml
+ScrollBar 2.0 ScrollBar.qml
+ScrollIndicator 6.0 ScrollIndicator.qml
+ScrollIndicator 2.0 ScrollIndicator.qml
+SelectionRectangle 6.0 SelectionRectangle.qml
+SelectionRectangle 2.0 SelectionRectangle.qml
+Slider 6.0 Slider.qml
+Slider 2.0 Slider.qml
+SpinBox 6.0 SpinBox.qml
+SpinBox 2.0 SpinBox.qml
+SplitView 2.13 SplitView.qml
+SplitView 6.0 SplitView.qml
+StackView 6.0 StackView.qml
+StackView 2.0 StackView.qml
+SwipeDelegate 6.0 SwipeDelegate.qml
+SwipeDelegate 2.0 SwipeDelegate.qml
+SwipeView 6.0 SwipeView.qml
+SwipeView 2.0 SwipeView.qml
+Switch 6.0 Switch.qml
+Switch 2.0 Switch.qml
+SwitchDelegate 6.0 SwitchDelegate.qml
+SwitchDelegate 2.0 SwitchDelegate.qml
+TextField 6.0 TextField.qml
+TextField 2.0 TextField.qml
+TextArea 6.0 TextArea.qml
+TextArea 2.0 TextArea.qml
+TabBar 6.0 TabBar.qml
+TabBar 2.0 TabBar.qml
+TabButton 6.0 TabButton.qml
+TabButton 2.0 TabButton.qml
+ToolBar 6.0 ToolBar.qml
+ToolBar 2.0 ToolBar.qml
+ToolButton 6.0 ToolButton.qml
+ToolButton 2.0 ToolButton.qml
+ToolSeparator 2.1 ToolSeparator.qml
+ToolSeparator 6.0 ToolSeparator.qml
+ToolTip 6.0 ToolTip.qml
+ToolTip 2.0 ToolTip.qml
+Tumbler 6.0 Tumbler.qml
+Tumbler 2.0 Tumbler.qml
+VerticalHeaderView 2.15 VerticalHeaderView.qml
+VerticalHeaderView 6.0 VerticalHeaderView.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Material/impl/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Material/impl/qmldir
new file mode 100644
index 0000000000..3608a16f08
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Material/impl/qmldir
@@ -0,0 +1,26 @@
+module QtQuick.Controls.Material.impl
+linktarget Qt6::qtquickcontrols2materialstyleimplplugin
+plugin qtquickcontrols2materialstyleimplplugin
+classname QtQuickControls2MaterialStyleImplPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Material/impl/
+BoxShadow 6.0 BoxShadow.qml
+BoxShadow 2.0 BoxShadow.qml
+CheckIndicator 6.0 CheckIndicator.qml
+CheckIndicator 2.0 CheckIndicator.qml
+CursorDelegate 6.0 CursorDelegate.qml
+CursorDelegate 2.0 CursorDelegate.qml
+ElevationEffect 6.0 ElevationEffect.qml
+ElevationEffect 2.0 ElevationEffect.qml
+RadioIndicator 6.0 RadioIndicator.qml
+RadioIndicator 2.0 RadioIndicator.qml
+RectangularGlow 6.0 RectangularGlow.qml
+RectangularGlow 2.0 RectangularGlow.qml
+RoundedElevationEffect 6.0 RoundedElevationEffect.qml
+RoundedElevationEffect 2.0 RoundedElevationEffect.qml
+SliderHandle 6.0 SliderHandle.qml
+SliderHandle 2.0 SliderHandle.qml
+SwitchIndicator 6.0 SwitchIndicator.qml
+SwitchIndicator 2.0 SwitchIndicator.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Material/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Material/qmldir
new file mode 100644
index 0000000000..9965cfe2ad
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Material/qmldir
@@ -0,0 +1,115 @@
+module QtQuick.Controls.Material
+linktarget Qt6::qtquickcontrols2materialstyleplugin
+plugin qtquickcontrols2materialstyleplugin
+classname QtQuickControls2MaterialStylePlugin
+typeinfo plugins.qmltypes
+import QtQuick.Controls.Basic auto
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Material/
+ApplicationWindow 6.0 ApplicationWindow.qml
+ApplicationWindow 2.0 ApplicationWindow.qml
+BusyIndicator 6.0 BusyIndicator.qml
+BusyIndicator 2.0 BusyIndicator.qml
+Button 6.0 Button.qml
+Button 2.0 Button.qml
+CheckBox 6.0 CheckBox.qml
+CheckBox 2.0 CheckBox.qml
+CheckDelegate 6.0 CheckDelegate.qml
+CheckDelegate 2.0 CheckDelegate.qml
+ComboBox 6.0 ComboBox.qml
+ComboBox 2.0 ComboBox.qml
+DelayButton 2.2 DelayButton.qml
+DelayButton 6.0 DelayButton.qml
+Dial 6.0 Dial.qml
+Dial 2.0 Dial.qml
+Dialog 2.1 Dialog.qml
+Dialog 6.0 Dialog.qml
+DialogButtonBox 2.1 DialogButtonBox.qml
+DialogButtonBox 6.0 DialogButtonBox.qml
+Drawer 6.0 Drawer.qml
+Drawer 2.0 Drawer.qml
+Frame 6.0 Frame.qml
+Frame 2.0 Frame.qml
+GroupBox 6.0 GroupBox.qml
+GroupBox 2.0 GroupBox.qml
+HorizontalHeaderView 2.15 HorizontalHeaderView.qml
+HorizontalHeaderView 6.0 HorizontalHeaderView.qml
+ItemDelegate 6.0 ItemDelegate.qml
+ItemDelegate 2.0 ItemDelegate.qml
+Label 6.0 Label.qml
+Label 2.0 Label.qml
+Menu 6.0 Menu.qml
+Menu 2.0 Menu.qml
+MenuBar 2.3 MenuBar.qml
+MenuBar 6.0 MenuBar.qml
+MenuBarItem 2.3 MenuBarItem.qml
+MenuBarItem 6.0 MenuBarItem.qml
+MenuItem 6.0 MenuItem.qml
+MenuItem 2.0 MenuItem.qml
+MenuSeparator 2.1 MenuSeparator.qml
+MenuSeparator 6.0 MenuSeparator.qml
+Page 6.0 Page.qml
+Page 2.0 Page.qml
+PageIndicator 6.0 PageIndicator.qml
+PageIndicator 2.0 PageIndicator.qml
+Pane 6.0 Pane.qml
+Pane 2.0 Pane.qml
+Popup 6.0 Popup.qml
+Popup 2.0 Popup.qml
+ProgressBar 6.0 ProgressBar.qml
+ProgressBar 2.0 ProgressBar.qml
+RadioButton 6.0 RadioButton.qml
+RadioButton 2.0 RadioButton.qml
+RadioDelegate 6.0 RadioDelegate.qml
+RadioDelegate 2.0 RadioDelegate.qml
+RangeSlider 6.0 RangeSlider.qml
+RangeSlider 2.0 RangeSlider.qml
+RoundButton 2.1 RoundButton.qml
+RoundButton 6.0 RoundButton.qml
+ScrollView 6.0 ScrollView.qml
+ScrollView 2.0 ScrollView.qml
+ScrollBar 6.0 ScrollBar.qml
+ScrollBar 2.0 ScrollBar.qml
+ScrollIndicator 6.0 ScrollIndicator.qml
+ScrollIndicator 2.0 ScrollIndicator.qml
+SelectionRectangle 6.0 SelectionRectangle.qml
+SelectionRectangle 2.0 SelectionRectangle.qml
+Slider 6.0 Slider.qml
+Slider 2.0 Slider.qml
+SpinBox 6.0 SpinBox.qml
+SpinBox 2.0 SpinBox.qml
+SplitView 2.13 SplitView.qml
+SplitView 6.0 SplitView.qml
+StackView 6.0 StackView.qml
+StackView 2.0 StackView.qml
+SwipeDelegate 6.0 SwipeDelegate.qml
+SwipeDelegate 2.0 SwipeDelegate.qml
+SwipeView 6.0 SwipeView.qml
+SwipeView 2.0 SwipeView.qml
+Switch 6.0 Switch.qml
+Switch 2.0 Switch.qml
+SwitchDelegate 6.0 SwitchDelegate.qml
+SwitchDelegate 2.0 SwitchDelegate.qml
+TabBar 6.0 TabBar.qml
+TabBar 2.0 TabBar.qml
+TabButton 6.0 TabButton.qml
+TabButton 2.0 TabButton.qml
+TextArea 6.0 TextArea.qml
+TextArea 2.0 TextArea.qml
+TextField 6.0 TextField.qml
+TextField 2.0 TextField.qml
+ToolBar 6.0 ToolBar.qml
+ToolBar 2.0 ToolBar.qml
+ToolButton 6.0 ToolButton.qml
+ToolButton 2.0 ToolButton.qml
+ToolSeparator 2.1 ToolSeparator.qml
+ToolSeparator 6.0 ToolSeparator.qml
+ToolTip 6.0 ToolTip.qml
+ToolTip 2.0 ToolTip.qml
+TreeViewDelegate 6.0 TreeViewDelegate.qml
+TreeViewDelegate 2.0 TreeViewDelegate.qml
+Tumbler 6.0 Tumbler.qml
+Tumbler 2.0 Tumbler.qml
+VerticalHeaderView 2.15 VerticalHeaderView.qml
+VerticalHeaderView 6.0 VerticalHeaderView.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Universal/impl/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Universal/impl/qmldir
new file mode 100644
index 0000000000..e3297d3412
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Universal/impl/qmldir
@@ -0,0 +1,14 @@
+module QtQuick.Controls.Universal.impl
+linktarget Qt6::qtquickcontrols2universalstyleimplplugin
+plugin qtquickcontrols2universalstyleimplplugin
+classname QtQuickControls2UniversalStyleImplPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Universal/impl/
+CheckIndicator 6.0 CheckIndicator.qml
+CheckIndicator 2.0 CheckIndicator.qml
+RadioIndicator 6.0 RadioIndicator.qml
+RadioIndicator 2.0 RadioIndicator.qml
+SwitchIndicator 6.0 SwitchIndicator.qml
+SwitchIndicator 2.0 SwitchIndicator.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/Universal/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/Universal/qmldir
new file mode 100644
index 0000000000..05fc6f15c5
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/Universal/qmldir
@@ -0,0 +1,111 @@
+module QtQuick.Controls.Universal
+linktarget Qt6::qtquickcontrols2universalstyleplugin
+plugin qtquickcontrols2universalstyleplugin
+classname QtQuickControls2UniversalStylePlugin
+typeinfo plugins.qmltypes
+import QtQuick.Controls.Basic auto
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Controls/Universal/
+ApplicationWindow 6.0 ApplicationWindow.qml
+ApplicationWindow 2.0 ApplicationWindow.qml
+BusyIndicator 6.0 BusyIndicator.qml
+BusyIndicator 2.0 BusyIndicator.qml
+Button 6.0 Button.qml
+Button 2.0 Button.qml
+CheckBox 6.0 CheckBox.qml
+CheckBox 2.0 CheckBox.qml
+CheckDelegate 6.0 CheckDelegate.qml
+CheckDelegate 2.0 CheckDelegate.qml
+ComboBox 6.0 ComboBox.qml
+ComboBox 2.0 ComboBox.qml
+DelayButton 2.2 DelayButton.qml
+DelayButton 6.0 DelayButton.qml
+Dial 6.0 Dial.qml
+Dial 2.0 Dial.qml
+Dialog 2.1 Dialog.qml
+Dialog 6.0 Dialog.qml
+DialogButtonBox 2.1 DialogButtonBox.qml
+DialogButtonBox 6.0 DialogButtonBox.qml
+Drawer 6.0 Drawer.qml
+Drawer 2.0 Drawer.qml
+Frame 6.0 Frame.qml
+Frame 2.0 Frame.qml
+GroupBox 6.0 GroupBox.qml
+GroupBox 2.0 GroupBox.qml
+HorizontalHeaderView 2.15 HorizontalHeaderView.qml
+HorizontalHeaderView 6.0 HorizontalHeaderView.qml
+ItemDelegate 6.0 ItemDelegate.qml
+ItemDelegate 2.0 ItemDelegate.qml
+Label 6.0 Label.qml
+Label 2.0 Label.qml
+Menu 6.0 Menu.qml
+Menu 2.0 Menu.qml
+MenuBar 2.3 MenuBar.qml
+MenuBar 6.0 MenuBar.qml
+MenuBarItem 2.3 MenuBarItem.qml
+MenuBarItem 6.0 MenuBarItem.qml
+MenuItem 6.0 MenuItem.qml
+MenuItem 2.0 MenuItem.qml
+MenuSeparator 2.1 MenuSeparator.qml
+MenuSeparator 6.0 MenuSeparator.qml
+Page 6.0 Page.qml
+Page 2.0 Page.qml
+PageIndicator 6.0 PageIndicator.qml
+PageIndicator 2.0 PageIndicator.qml
+Pane 6.0 Pane.qml
+Pane 2.0 Pane.qml
+Popup 6.0 Popup.qml
+Popup 2.0 Popup.qml
+ProgressBar 6.0 ProgressBar.qml
+ProgressBar 2.0 ProgressBar.qml
+RadioButton 6.0 RadioButton.qml
+RadioButton 2.0 RadioButton.qml
+RadioDelegate 6.0 RadioDelegate.qml
+RadioDelegate 2.0 RadioDelegate.qml
+RangeSlider 6.0 RangeSlider.qml
+RangeSlider 2.0 RangeSlider.qml
+RoundButton 2.1 RoundButton.qml
+RoundButton 6.0 RoundButton.qml
+ScrollView 6.0 ScrollView.qml
+ScrollView 2.0 ScrollView.qml
+ScrollBar 6.0 ScrollBar.qml
+ScrollBar 2.0 ScrollBar.qml
+ScrollIndicator 6.0 ScrollIndicator.qml
+ScrollIndicator 2.0 ScrollIndicator.qml
+SelectionRectangle 6.0 SelectionRectangle.qml
+SelectionRectangle 2.0 SelectionRectangle.qml
+Slider 6.0 Slider.qml
+Slider 2.0 Slider.qml
+SpinBox 6.0 SpinBox.qml
+SpinBox 2.0 SpinBox.qml
+SplitView 2.13 SplitView.qml
+SplitView 6.0 SplitView.qml
+StackView 6.0 StackView.qml
+StackView 2.0 StackView.qml
+SwipeDelegate 6.0 SwipeDelegate.qml
+SwipeDelegate 2.0 SwipeDelegate.qml
+SwitchDelegate 6.0 SwitchDelegate.qml
+SwitchDelegate 2.0 SwitchDelegate.qml
+Switch 6.0 Switch.qml
+Switch 2.0 Switch.qml
+TabBar 6.0 TabBar.qml
+TabBar 2.0 TabBar.qml
+TabButton 6.0 TabButton.qml
+TabButton 2.0 TabButton.qml
+TextArea 6.0 TextArea.qml
+TextArea 2.0 TextArea.qml
+TextField 6.0 TextField.qml
+TextField 2.0 TextField.qml
+ToolBar 6.0 ToolBar.qml
+ToolBar 2.0 ToolBar.qml
+ToolButton 6.0 ToolButton.qml
+ToolButton 2.0 ToolButton.qml
+ToolSeparator 2.1 ToolSeparator.qml
+ToolSeparator 6.0 ToolSeparator.qml
+ToolTip 6.0 ToolTip.qml
+ToolTip 2.0 ToolTip.qml
+Tumbler 6.0 Tumbler.qml
+Tumbler 2.0 Tumbler.qml
+VerticalHeaderView 2.15 VerticalHeaderView.qml
+VerticalHeaderView 6.0 VerticalHeaderView.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/impl/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/impl/qmldir
new file mode 100644
index 0000000000..84355c3b9f
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/impl/qmldir
@@ -0,0 +1,9 @@
+module QtQuick.Controls.impl
+linktarget Qt6::qtquickcontrols2implplugin
+optional plugin qtquickcontrols2implplugin
+classname QtQuickControls2ImplPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+depends QtQuick.Templates auto
+prefer :/qt-project.org/imports/QtQuick/Controls/impl/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Controls/qmldir b/tests/unit/unittest/data/qml/QtQuick/Controls/qmldir
new file mode 100644
index 0000000000..86f42c2274
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Controls/qmldir
@@ -0,0 +1,16 @@
+module QtQuick.Controls
+linktarget Qt6::qtquickcontrols2plugin
+plugin qtquickcontrols2plugin
+classname QtQuickControls2Plugin
+designersupported
+typeinfo plugins.qmltypes
+optional import QtQuick.Controls.Fusion auto
+optional import QtQuick.Controls.Material auto
+optional import QtQuick.Controls.Imagine auto
+optional import QtQuick.Controls.Universal auto
+optional import QtQuick.Controls.Windows auto
+optional import QtQuick.Controls.macOS auto
+optional import QtQuick.Controls.iOS auto
+default import QtQuick.Controls.Basic auto
+prefer :/qt-project.org/imports/QtQuick/Controls/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Dialogs/qmldir b/tests/unit/unittest/data/qml/QtQuick/Dialogs/qmldir
new file mode 100644
index 0000000000..9468d95530
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Dialogs/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.Dialogs
+linktarget Qt6::qtquickdialogsplugin
+optional plugin qtquickdialogsplugin
+classname QtQuickDialogsPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Dialogs/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Dialogs/quickimpl/qmldir b/tests/unit/unittest/data/qml/QtQuick/Dialogs/quickimpl/qmldir
new file mode 100644
index 0000000000..85a331e306
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Dialogs/quickimpl/qmldir
@@ -0,0 +1,57 @@
+module QtQuick.Dialogs.quickimpl
+linktarget Qt6::qtquickdialogs2quickimplplugin
+optional plugin qtquickdialogs2quickimplplugin
+classname QtQuickDialogs2QuickImplPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+depends QtQuick.Templates auto
+depends QtQuick.Layouts auto
+prefer :/qt-project.org/imports/QtQuick/Dialogs/quickimpl/
+ColorDialog 6.0 qml/ColorDialog.qml
+ColorInputs 6.0 qml/ColorInputs.qml
+FileDialog 6.0 qml/FileDialog.qml
+FileDialogDelegate 6.0 qml/FileDialogDelegate.qml
+FileDialogDelegateLabel 6.0 qml/FileDialogDelegateLabel.qml
+FolderBreadcrumbBar 6.0 qml/FolderBreadcrumbBar.qml
+FolderDialog 6.0 qml/FolderDialog.qml
+FolderDialogDelegate 6.0 qml/FolderDialogDelegate.qml
+FolderDialogDelegateLabel 6.0 qml/FolderDialogDelegateLabel.qml
+FontDialog 6.0 qml/FontDialog.qml
+FontDialogContent 6.0 qml/FontDialogContent.qml
+HueGradient 6.0 qml/HueGradient.qml
+MessageDialog 6.0 qml/MessageDialog.qml
+PickerHandle 6.0 qml/PickerHandle.qml
+SaturationLightnessPicker 6.0 qml/SaturationLightnessPicker.qml
+ColorDialog 6.0 qml/+Fusion/ColorDialog.qml
+FileDialog 6.0 qml/+Fusion/FileDialog.qml
+FileDialogDelegate 6.0 qml/+Fusion/FileDialogDelegate.qml
+FolderBreadcrumbBar 6.0 qml/+Fusion/FolderBreadcrumbBar.qml
+FolderDialog 6.0 qml/+Fusion/FolderDialog.qml
+FolderDialogDelegate 6.0 qml/+Fusion/FolderDialogDelegate.qml
+FontDialog 6.0 qml/+Fusion/FontDialog.qml
+MessageDialog 6.0 qml/+Fusion/MessageDialog.qml
+ColorDialog 6.0 qml/+Imagine/ColorDialog.qml
+FileDialog 6.0 qml/+Imagine/FileDialog.qml
+FileDialogDelegate 6.0 qml/+Imagine/FileDialogDelegate.qml
+FolderBreadcrumbBar 6.0 qml/+Imagine/FolderBreadcrumbBar.qml
+FolderDialog 6.0 qml/+Imagine/FolderDialog.qml
+FolderDialogDelegate 6.0 qml/+Imagine/FolderDialogDelegate.qml
+FontDialog 6.0 qml/+Imagine/FontDialog.qml
+MessageDialog 6.0 qml/+Imagine/MessageDialog.qml
+ColorDialog 6.0 qml/+Material/ColorDialog.qml
+FileDialog 6.0 qml/+Material/FileDialog.qml
+FileDialogDelegate 6.0 qml/+Material/FileDialogDelegate.qml
+FolderBreadcrumbBar 6.0 qml/+Material/FolderBreadcrumbBar.qml
+FolderDialog 6.0 qml/+Material/FolderDialog.qml
+FolderDialogDelegate 6.0 qml/+Material/FolderDialogDelegate.qml
+FontDialog 6.0 qml/+Material/FontDialog.qml
+MessageDialog 6.0 qml/+Material/MessageDialog.qml
+ColorDialog 6.0 qml/+Universal/ColorDialog.qml
+FileDialog 6.0 qml/+Universal/FileDialog.qml
+FileDialogDelegate 6.0 qml/+Universal/FileDialogDelegate.qml
+FolderBreadcrumbBar 6.0 qml/+Universal/FolderBreadcrumbBar.qml
+FolderDialog 6.0 qml/+Universal/FolderDialog.qml
+FolderDialogDelegate 6.0 qml/+Universal/FolderDialogDelegate.qml
+FontDialog 6.0 qml/+Universal/FontDialog.qml
+MessageDialog 6.0 qml/+Universal/MessageDialog.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Effects/qmldir b/tests/unit/unittest/data/qml/QtQuick/Effects/qmldir
new file mode 100644
index 0000000000..4fbc513d21
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Effects/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.Effects
+linktarget Qt6::effectsplugin
+optional plugin effectsplugin
+classname QtQuickEffectsPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Effects/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Layouts/qmldir b/tests/unit/unittest/data/qml/QtQuick/Layouts/qmldir
new file mode 100644
index 0000000000..9fa0f0d84c
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Layouts/qmldir
@@ -0,0 +1,9 @@
+module QtQuick.Layouts
+linktarget Qt6::qquicklayoutsplugin
+optional plugin qquicklayoutsplugin
+classname QtQuickLayoutsPlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Layouts/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/LocalStorage/qmldir b/tests/unit/unittest/data/qml/QtQuick/LocalStorage/qmldir
new file mode 100644
index 0000000000..de9d480b6c
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/LocalStorage/qmldir
@@ -0,0 +1,7 @@
+module QtQuick.LocalStorage
+linktarget Qt6::qmllocalstorageplugin
+optional plugin qmllocalstorageplugin
+classname QQmlLocalStoragePlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQuick/LocalStorage/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/NativeStyle/qmldir b/tests/unit/unittest/data/qml/QtQuick/NativeStyle/qmldir
new file mode 100644
index 0000000000..4ab0813a4d
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/NativeStyle/qmldir
@@ -0,0 +1,38 @@
+module QtQuick.NativeStyle
+linktarget Qt6::qtquickcontrols2nativestyleplugin
+plugin qtquickcontrols2nativestyleplugin
+classname QtQuickControls2NativeStylePlugin
+typeinfo plugins.qmltypes
+depends QtQuick.Controls auto
+depends QtQuick.Layouts auto
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/NativeStyle/
+DefaultButton 6.0 controls/DefaultButton.qml
+DefaultButton 2.0 controls/DefaultButton.qml
+DefaultSlider 6.0 controls/DefaultSlider.qml
+DefaultSlider 2.0 controls/DefaultSlider.qml
+DefaultGroupBox 6.0 controls/DefaultGroupBox.qml
+DefaultGroupBox 2.0 controls/DefaultGroupBox.qml
+DefaultCheckBox 6.0 controls/DefaultCheckBox.qml
+DefaultCheckBox 2.0 controls/DefaultCheckBox.qml
+DefaultRadioButton 6.0 controls/DefaultRadioButton.qml
+DefaultRadioButton 2.0 controls/DefaultRadioButton.qml
+DefaultSpinBox 6.0 controls/DefaultSpinBox.qml
+DefaultSpinBox 2.0 controls/DefaultSpinBox.qml
+DefaultTextField 6.0 controls/DefaultTextField.qml
+DefaultTextField 2.0 controls/DefaultTextField.qml
+DefaultFrame 6.0 controls/DefaultFrame.qml
+DefaultFrame 2.0 controls/DefaultFrame.qml
+DefaultTextArea 6.0 controls/DefaultTextArea.qml
+DefaultTextArea 2.0 controls/DefaultTextArea.qml
+DefaultComboBox 6.0 controls/DefaultComboBox.qml
+DefaultComboBox 2.0 controls/DefaultComboBox.qml
+DefaultScrollBar 6.0 controls/DefaultScrollBar.qml
+DefaultScrollBar 2.0 controls/DefaultScrollBar.qml
+DefaultProgressBar 6.0 controls/DefaultProgressBar.qml
+DefaultProgressBar 2.0 controls/DefaultProgressBar.qml
+DefaultDial 6.0 controls/DefaultDial.qml
+DefaultDial 2.0 controls/DefaultDial.qml
+DefaultTreeViewDelegate 6.0 controls/DefaultTreeViewDelegate.qml
+DefaultTreeViewDelegate 2.0 controls/DefaultTreeViewDelegate.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Particles/qmldir b/tests/unit/unittest/data/qml/QtQuick/Particles/qmldir
new file mode 100644
index 0000000000..163fb28bdf
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Particles/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.Particles
+linktarget Qt6::particlesplugin
+optional plugin particlesplugin
+classname QtQuick2ParticlesPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Particles/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Pdf/qmldir b/tests/unit/unittest/data/qml/QtQuick/Pdf/qmldir
new file mode 100644
index 0000000000..9004a9ed71
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Pdf/qmldir
@@ -0,0 +1,22 @@
+module QtQuick.Pdf
+linktarget Qt6::PdfQuickplugin
+optional plugin pdfquickplugin
+classname QtQuick_PdfPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Pdf/
+PdfStyle 6.0 +Material/PdfStyle.qml
+PdfStyle 5.0 +Material/PdfStyle.qml
+PdfStyle 6.0 +Universal/PdfStyle.qml
+PdfStyle 5.0 +Universal/PdfStyle.qml
+PdfLinkDelegate 6.0 PdfLinkDelegate.qml
+PdfLinkDelegate 5.0 PdfLinkDelegate.qml
+PdfMultiPageView 6.0 PdfMultiPageView.qml
+PdfMultiPageView 5.0 PdfMultiPageView.qml
+PdfPageView 6.0 PdfPageView.qml
+PdfPageView 5.0 PdfPageView.qml
+PdfScrollablePageView 6.0 PdfScrollablePageView.qml
+PdfScrollablePageView 5.0 PdfScrollablePageView.qml
+PdfStyle 6.0 PdfStyle.qml
+PdfStyle 5.0 PdfStyle.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Scene2D/qmldir b/tests/unit/unittest/data/qml/QtQuick/Scene2D/qmldir
new file mode 100644
index 0000000000..8a22233433
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Scene2D/qmldir
@@ -0,0 +1,7 @@
+module QtQuick.Scene2D
+linktarget Qt6::qtquickscene2dplugin
+plugin qtquickscene2dplugin
+classname QtQuickScene2DPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQuick/Scene2D/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Scene3D/qmldir b/tests/unit/unittest/data/qml/QtQuick/Scene3D/qmldir
new file mode 100644
index 0000000000..6dcd613d39
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Scene3D/qmldir
@@ -0,0 +1,7 @@
+module QtQuick.Scene3D
+linktarget Qt6::qtquickscene3dplugin
+plugin qtquickscene3dplugin
+classname QtQuickScene3DPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQuick/Scene3D/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Shapes/qmldir b/tests/unit/unittest/data/qml/QtQuick/Shapes/qmldir
new file mode 100644
index 0000000000..428ff391a4
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Shapes/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.Shapes
+linktarget Qt6::qmlshapesplugin
+plugin qmlshapesplugin
+classname QmlShapesPlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Shapes/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Templates/qmldir b/tests/unit/unittest/data/qml/QtQuick/Templates/qmldir
new file mode 100644
index 0000000000..bd76866538
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Templates/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.Templates
+linktarget Qt6::qtquicktemplates2plugin
+plugin qtquicktemplates2plugin
+classname QtQuickTemplates2Plugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Templates/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Timeline/qmldir b/tests/unit/unittest/data/qml/QtQuick/Timeline/qmldir
new file mode 100644
index 0000000000..f4e953c568
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Timeline/qmldir
@@ -0,0 +1,9 @@
+module QtQuick.Timeline
+linktarget Qt6::qtquicktimelineplugin
+optional plugin qtquicktimelineplugin
+classname QtQuickTimelinePlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQuick
+prefer :/qt-project.org/imports/QtQuick/Timeline/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Components/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Components/qmldir
new file mode 100644
index 0000000000..d1f487261a
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Components/qmldir
@@ -0,0 +1,103 @@
+module QtQuick.VirtualKeyboard.Components
+linktarget Qt6::qtvkbcomponentsplugin
+optional plugin qtvkbcomponentsplugin
+classname QtQuick_VirtualKeyboard_ComponentsPlugin
+typeinfo qtvkbcomponentsplugin.qmltypes
+depends QtQuick auto
+depends QtQuick.Layouts auto
+depends QtQuick.VirtualKeyboard.Settings auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Components/
+AlternativeKeys 6.0 AlternativeKeys.qml
+AlternativeKeys 2.0 AlternativeKeys.qml
+AlternativeKeys 1.0 AlternativeKeys.qml
+BackspaceKey 6.0 BackspaceKey.qml
+BackspaceKey 2.0 BackspaceKey.qml
+BackspaceKey 1.0 BackspaceKey.qml
+BaseKey 6.0 BaseKey.qml
+BaseKey 2.0 BaseKey.qml
+BaseKey 1.0 BaseKey.qml
+ChangeLanguageKey 6.0 ChangeLanguageKey.qml
+ChangeLanguageKey 2.0 ChangeLanguageKey.qml
+ChangeLanguageKey 1.0 ChangeLanguageKey.qml
+CharacterPreviewBubble 6.0 CharacterPreviewBubble.qml
+CharacterPreviewBubble 2.0 CharacterPreviewBubble.qml
+CharacterPreviewBubble 1.0 CharacterPreviewBubble.qml
+EnterKey 6.0 EnterKey.qml
+EnterKey 2.0 EnterKey.qml
+EnterKey 1.0 EnterKey.qml
+FillerKey 6.0 FillerKey.qml
+FillerKey 2.0 FillerKey.qml
+FillerKey 1.0 FillerKey.qml
+FlickKey 6.0 FlickKey.qml
+FlickKey 2.0 FlickKey.qml
+FlickKey 1.0 FlickKey.qml
+FunctionPopupList 6.0 FunctionPopupList.qml
+FunctionPopupList 2.0 FunctionPopupList.qml
+FunctionPopupList 1.0 FunctionPopupList.qml
+HandwritingModeKey 6.0 HandwritingModeKey.qml
+HandwritingModeKey 2.0 HandwritingModeKey.qml
+HandwritingModeKey 1.0 HandwritingModeKey.qml
+HideKeyboardKey 6.0 HideKeyboardKey.qml
+HideKeyboardKey 2.0 HideKeyboardKey.qml
+HideKeyboardKey 1.0 HideKeyboardKey.qml
+InputModeKey 6.0 InputModeKey.qml
+InputModeKey 2.0 InputModeKey.qml
+InputModeKey 1.0 InputModeKey.qml
+Key 6.0 Key.qml
+Key 2.0 Key.qml
+Key 1.0 Key.qml
+Keyboard 6.0 Keyboard.qml
+Keyboard 2.0 Keyboard.qml
+Keyboard 1.0 Keyboard.qml
+KeyboardColumn 6.0 KeyboardColumn.qml
+KeyboardColumn 2.0 KeyboardColumn.qml
+KeyboardColumn 1.0 KeyboardColumn.qml
+KeyboardLayout 6.0 KeyboardLayout.qml
+KeyboardLayout 2.0 KeyboardLayout.qml
+KeyboardLayout 1.0 KeyboardLayout.qml
+KeyboardLayoutLoader 6.0 KeyboardLayoutLoader.qml
+KeyboardLayoutLoader 2.0 KeyboardLayoutLoader.qml
+KeyboardLayoutLoader 1.0 KeyboardLayoutLoader.qml
+KeyboardRow 6.0 KeyboardRow.qml
+KeyboardRow 2.0 KeyboardRow.qml
+KeyboardRow 1.0 KeyboardRow.qml
+ModeKey 6.0 ModeKey.qml
+ModeKey 2.0 ModeKey.qml
+ModeKey 1.0 ModeKey.qml
+MultiSoundEffect 6.0 MultiSoundEffect.qml
+MultiSoundEffect 2.0 MultiSoundEffect.qml
+MultiSoundEffect 1.0 MultiSoundEffect.qml
+MultitapInputMethod 6.0 MultitapInputMethod.qml
+MultitapInputMethod 2.0 MultitapInputMethod.qml
+MultitapInputMethod 1.0 MultitapInputMethod.qml
+NumberKey 6.0 NumberKey.qml
+NumberKey 2.0 NumberKey.qml
+NumberKey 1.0 NumberKey.qml
+PopupList 6.0 PopupList.qml
+PopupList 2.0 PopupList.qml
+PopupList 1.0 PopupList.qml
+SelectionControl 6.0 SelectionControl.qml
+SelectionControl 2.0 SelectionControl.qml
+SelectionControl 1.0 SelectionControl.qml
+ShadowInputControl 6.0 ShadowInputControl.qml
+ShadowInputControl 2.0 ShadowInputControl.qml
+ShadowInputControl 1.0 ShadowInputControl.qml
+ShiftKey 6.0 ShiftKey.qml
+ShiftKey 2.0 ShiftKey.qml
+ShiftKey 1.0 ShiftKey.qml
+SpaceKey 6.0 SpaceKey.qml
+SpaceKey 2.0 SpaceKey.qml
+SpaceKey 1.0 SpaceKey.qml
+SymbolModeKey 6.0 SymbolModeKey.qml
+SymbolModeKey 2.0 SymbolModeKey.qml
+SymbolModeKey 1.0 SymbolModeKey.qml
+TraceInputArea 6.0 TraceInputArea.qml
+TraceInputArea 2.0 TraceInputArea.qml
+TraceInputArea 1.0 TraceInputArea.qml
+TraceInputKey 6.0 TraceInputKey.qml
+TraceInputKey 2.0 TraceInputKey.qml
+TraceInputKey 1.0 TraceInputKey.qml
+WordCandidatePopupList 6.0 WordCandidatePopupList.qml
+WordCandidatePopupList 2.0 WordCandidatePopupList.qml
+WordCandidatePopupList 1.0 WordCandidatePopupList.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Layouts/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Layouts/qmldir
new file mode 100644
index 0000000000..626958542b
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Layouts/qmldir
@@ -0,0 +1,7 @@
+module QtQuick.VirtualKeyboard.Layouts
+linktarget Qt6::qtvkblayoutsplugin
+plugin qtvkblayoutsplugin
+classname QtQuick_VirtualKeyboard_LayoutsPlugin
+typeinfo qtvkblayoutsplugin.qmltypes
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Layouts/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Hangul/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Hangul/qmldir
new file mode 100644
index 0000000000..d884562c66
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Hangul/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.VirtualKeyboard.Plugins.Hangul
+linktarget Qt6::qtvkbhangulplugin
+plugin qtvkbhangulplugin
+classname QtQuick_VirtualKeyboard_Plugins_HangulPlugin
+typeinfo plugins.qmltypes
+depends QtQuick.VirtualKeyboard auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Plugins/Hangul/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/OpenWNN/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/OpenWNN/qmldir
new file mode 100644
index 0000000000..d356a13a06
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/OpenWNN/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.VirtualKeyboard.Plugins.OpenWNN
+linktarget Qt6::qtvkbopenwnnplugin
+plugin qtvkbopenwnnplugin
+classname QtQuick_VirtualKeyboard_Plugins_OpenWNNPlugin
+typeinfo plugins.qmltypes
+depends QtQuick.VirtualKeyboard auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Plugins/OpenWNN/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Pinyin/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Pinyin/qmldir
new file mode 100644
index 0000000000..cdf0732022
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Pinyin/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.VirtualKeyboard.Plugins.Pinyin
+linktarget Qt6::qtvkbpinyinplugin
+plugin qtvkbpinyinplugin
+classname QtQuick_VirtualKeyboard_Plugins_PinyinPlugin
+typeinfo plugins.qmltypes
+depends QtQuick.VirtualKeyboard auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Plugins/Pinyin/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/TCIme/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/TCIme/qmldir
new file mode 100644
index 0000000000..f3d7c58053
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/TCIme/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.VirtualKeyboard.Plugins.TCIme
+linktarget Qt6::qtvkbtcimeplugin
+plugin qtvkbtcimeplugin
+classname QtQuick_VirtualKeyboard_Plugins_TCImePlugin
+typeinfo plugins.qmltypes
+depends QtQuick.VirtualKeyboard auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Plugins/TCIme/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Thai/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Thai/qmldir
new file mode 100644
index 0000000000..79164dda63
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/Thai/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.VirtualKeyboard.Plugins.Thai
+linktarget Qt6::qtvkbthaiplugin
+plugin qtvkbthaiplugin
+classname QtQuick_VirtualKeyboard_Plugins_ThaiPlugin
+typeinfo plugins.qmltypes
+depends QtQuick.VirtualKeyboard auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Plugins/Thai/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/qmldir
new file mode 100644
index 0000000000..d07a1a1c2d
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Plugins/qmldir
@@ -0,0 +1,12 @@
+module QtQuick.VirtualKeyboard.Plugins
+linktarget Qt6::qtvkbpluginsplugin
+optional plugin qtvkbpluginsplugin
+classname QtQuick_VirtualKeyboard_PluginsPlugin
+typeinfo qtvkbpluginsplugin.qmltypes
+import QtQuick.VirtualKeyboard.Plugins.Hangul auto
+import QtQuick.VirtualKeyboard.Plugins.OpenWNN auto
+import QtQuick.VirtualKeyboard.Plugins.Pinyin auto
+import QtQuick.VirtualKeyboard.Plugins.TCIme auto
+import QtQuick.VirtualKeyboard.Plugins.Thai auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Plugins/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Settings/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Settings/qmldir
new file mode 100644
index 0000000000..a3043cf3f6
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Settings/qmldir
@@ -0,0 +1,7 @@
+module QtQuick.VirtualKeyboard.Settings
+linktarget Qt6::qtvkbsettingsplugin
+plugin qtvkbsettingsplugin
+classname QtQuick_VirtualKeyboard_SettingsPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Settings/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Styles/Builtin/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Styles/Builtin/qmldir
new file mode 100644
index 0000000000..fdf9f086ab
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Styles/Builtin/qmldir
@@ -0,0 +1,7 @@
+module QtQuick.VirtualKeyboard.Styles.Builtin
+linktarget Qt6::qtvkbbuiltinstylesplugin
+plugin qtvkbbuiltinstylesplugin
+classname QtQuickVirtualKeyboardStylesBuiltinPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/Builtin/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Styles/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Styles/qmldir
new file mode 100644
index 0000000000..8804cd8a73
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/Styles/qmldir
@@ -0,0 +1,30 @@
+module QtQuick.VirtualKeyboard.Styles
+linktarget Qt6::qtvkbstylesplugin
+plugin qtvkbstylesplugin
+classname QtQuickVirtualKeyboardStylesPlugin
+typeinfo plugins.qmltypes
+import QtQuick.VirtualKeyboard.Styles.Builtin auto
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/
+KeyboardStyle 6.0 KeyboardStyle.qml
+KeyboardStyle 2.0 KeyboardStyle.qml
+KeyboardStyle 1.0 KeyboardStyle.qml
+KeyIcon 6.0 KeyIcon.qml
+KeyIcon 2.0 KeyIcon.qml
+KeyIcon 1.0 KeyIcon.qml
+KeyPanel 6.0 KeyPanel.qml
+KeyPanel 2.0 KeyPanel.qml
+KeyPanel 1.0 KeyPanel.qml
+SelectionListItem 6.0 SelectionListItem.qml
+SelectionListItem 2.0 SelectionListItem.qml
+SelectionListItem 1.0 SelectionListItem.qml
+TraceInputKeyPanel 6.0 TraceInputKeyPanel.qml
+TraceInputKeyPanel 2.0 TraceInputKeyPanel.qml
+TraceInputKeyPanel 1.0 TraceInputKeyPanel.qml
+TraceCanvas 6.0 TraceCanvas.qml
+TraceCanvas 2.0 TraceCanvas.qml
+TraceCanvas 1.0 TraceCanvas.qml
+TraceUtils 6.0 TraceUtils.js
+TraceUtils 2.0 TraceUtils.js
+TraceUtils 1.0 TraceUtils.js
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/qmldir b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/qmldir
new file mode 100644
index 0000000000..754cc75449
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/VirtualKeyboard/qmldir
@@ -0,0 +1,25 @@
+module QtQuick.VirtualKeyboard
+linktarget Qt6::qtvkbplugin
+optional plugin qtvkbplugin
+classname QtQuick_VirtualKeyboardPlugin
+typeinfo plugins.qmltypes
+import QtQuick.VirtualKeyboard.Layouts auto
+import QtQuick.VirtualKeyboard.Components auto
+depends QtQuick auto
+depends QtQuick.Window auto
+depends QtQuick.Layouts auto
+depends Qt.labs.folderlistmodel auto
+depends QtQuick.VirtualKeyboard.Settings auto
+depends QtQuick.VirtualKeyboard.Styles auto
+depends QtQuick.VirtualKeyboard.Plugins auto
+prefer :/qt-project.org/imports/QtQuick/VirtualKeyboard/
+HandwritingInputPanel 6.0 HandwritingInputPanel.qml
+HandwritingInputPanel 2.0 HandwritingInputPanel.qml
+HandwritingInputPanel 1.0 HandwritingInputPanel.qml
+InputPanel 6.0 InputPanel.qml
+InputPanel 2.0 InputPanel.qml
+InputPanel 1.0 InputPanel.qml
+EnterKey 6.0 EnterKey.qml
+EnterKey 2.0 EnterKey.qml
+EnterKey 1.0 EnterKey.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/Window/qmldir b/tests/unit/unittest/data/qml/QtQuick/Window/qmldir
new file mode 100644
index 0000000000..5ff5ce84dd
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/Window/qmldir
@@ -0,0 +1,8 @@
+module QtQuick.Window
+linktarget Qt6::quickwindow
+plugin quickwindowplugin
+classname QtQuick_WindowPlugin
+typeinfo quickwindow.qmltypes
+import QtQuick auto
+prefer :/qt-project.org/imports/QtQuick/Window/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/qmldir b/tests/unit/unittest/data/qml/QtQuick/qmldir
new file mode 100644
index 0000000000..7d68a105aa
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/qmldir
@@ -0,0 +1,9 @@
+module QtQuick
+linktarget Qt6::qtquick2plugin
+optional plugin qtquick2plugin
+classname QtQuick2Plugin
+designersupported
+typeinfo plugins.qmltypes
+import QtQml auto
+prefer :/qt-project.org/imports/QtQuick/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick/tooling/qmldir b/tests/unit/unittest/data/qml/QtQuick/tooling/qmldir
new file mode 100644
index 0000000000..99798d19a6
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick/tooling/qmldir
@@ -0,0 +1,23 @@
+module QtQuick.tooling
+linktarget Qt6::quicktooling
+plugin quicktoolingplugin
+classname QtQuick_toolingPlugin
+typeinfo quicktooling.qmltypes
+prefer :/qt-project.org/imports/QtQuick/tooling/
+Component 1.2 Component.qml
+Component 6.0 Component.qml
+Enum 1.2 Enum.qml
+Enum 6.0 Enum.qml
+Member 1.2 Member.qml
+Member 6.0 Member.qml
+Method 1.2 Method.qml
+Method 6.0 Method.qml
+Module 1.2 Module.qml
+Module 6.0 Module.qml
+Parameter 1.2 Parameter.qml
+Parameter 6.0 Parameter.qml
+Property 1.2 Property.qml
+Property 6.0 Property.qml
+Signal 1.2 Signal.qml
+Signal 6.0 Signal.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/AssetUtils/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/AssetUtils/qmldir
new file mode 100644
index 0000000000..5c75903171
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/AssetUtils/qmldir
@@ -0,0 +1,9 @@
+module QtQuick3D.AssetUtils
+linktarget Qt6::qtquick3dassetutilsplugin
+optional plugin qtquick3dassetutilsplugin
+classname QtQuick3DAssetUtilsPlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQuick3D auto
+prefer :/qt-project.org/imports/QtQuick3D/AssetUtils/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/Effects/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/Effects/qmldir
new file mode 100644
index 0000000000..cec26d9c2a
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/Effects/qmldir
@@ -0,0 +1,31 @@
+module QtQuick3D.Effects
+linktarget Qt6::qtquick3deffectplugin
+optional plugin qtquick3deffectplugin
+classname QtQuick3DEffectPlugin
+designersupported
+typeinfo Quick3DEffects.qmltypes
+depends QtQuick3D auto
+depends QtQuick.Window auto
+prefer :/qt-project.org/imports/QtQuick3D/Effects/
+Vignette 6.0 Vignette.qml
+TiltShift 6.0 TiltShift.qml
+SCurveTonemap 6.0 SCurveTonemap.qml
+Scatter 6.0 Scatter.qml
+MotionBlur 6.0 MotionBlur.qml
+HDRBloomTonemap 6.0 HDRBloomTonemap.qml
+GaussianBlur 6.0 GaussianBlur.qml
+Fxaa 6.0 Fxaa.qml
+Flip 6.0 Flip.qml
+Emboss 6.0 Emboss.qml
+EdgeDetect 6.0 EdgeDetect.qml
+DistortionSpiral 6.0 DistortionSpiral.qml
+DistortionSphere 6.0 DistortionSphere.qml
+DistortionRipple 6.0 DistortionRipple.qml
+Desaturate 6.0 Desaturate.qml
+DepthOfFieldHQBlur 6.0 DepthOfFieldHQBlur.qml
+ColorMaster 6.0 ColorMaster.qml
+ChromaticAberration 6.0 ChromaticAberration.qml
+BrushStrokes 6.0 BrushStrokes.qml
+Blur 6.0 Blur.qml
+AdditiveColorGradient 6.0 AdditiveColorGradient.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/Helpers/impl/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/Helpers/impl/qmldir
new file mode 100644
index 0000000000..013c950285
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/Helpers/impl/qmldir
@@ -0,0 +1,12 @@
+module QtQuick3D.Helpers.impl
+linktarget Qt6::qtquick3dhelpersimplplugin
+plugin qtquick3dhelpersimplplugin
+classname QtQuick3DHelpersImplPlugin
+typeinfo plugins.qmltypes
+depends QtQuick3D auto
+depends Quick3DHelpers auto
+prefer :/qt-project.org/imports/QtQuick3D/Helpers/impl/
+DepthOfFieldBlur 6.0 DepthOfFieldBlur.qml
+SceneEffect 6.0 SceneEffect.qml
+LightmapperOutputWindow 6.0 LightmapperOutputWindow.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/Helpers/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/Helpers/qmldir
new file mode 100644
index 0000000000..f70948ab74
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/Helpers/qmldir
@@ -0,0 +1,21 @@
+module QtQuick3D.Helpers
+linktarget Qt6::qtquick3dhelpersplugin
+optional plugin qtquick3dhelpersplugin
+classname QtQuick3DHelpersPlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQuick3D auto
+prefer :/qt-project.org/imports/QtQuick3D/Helpers/
+AxisHelper 6.0 AxisHelper.qml
+AxisHelper 1.0 AxisHelper.qml
+DebugView 6.0 DebugView.qml
+DebugView 1.0 DebugView.qml
+WasdController 6.0 WasdController.qml
+WasdController 1.0 WasdController.qml
+OrbitCameraController 6.0 OrbitCameraController.qml
+OrbitCameraController 1.0 OrbitCameraController.qml
+LodManager 6.0 LodManager.qml
+LodManager 1.0 LodManager.qml
+ExtendedSceneEnvironment 6.0 ExtendedSceneEnvironment.qml
+ExtendedSceneEnvironment 1.0 ExtendedSceneEnvironment.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/MaterialEditor/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/MaterialEditor/qmldir
new file mode 100644
index 0000000000..0286f76d75
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/MaterialEditor/qmldir
@@ -0,0 +1,13 @@
+module QtQuick3D.MaterialEditor
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQuick3D/MaterialEditor/
+ShaderEditor 1.0 ShaderEditor.qml
+EditorView 1.0 EditorView.qml
+Preview 1.0 Preview.qml
+PreviewControls 1.0 PreviewControls.qml
+FrostedGlass 1.0 FrostedGlass.qml
+AboutDialog 1.0 AboutDialog.qml
+MaterialPropertiesPane 1.0 MaterialPropertiesPane.qml
+SaveChangesDialog 1.0 SaveChangesDialog.qml
+UniformManagerPane 1.0 UniformManagerPane.qml
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/ParticleEffects/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/ParticleEffects/qmldir
new file mode 100644
index 0000000000..6abbe02012
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/ParticleEffects/qmldir
@@ -0,0 +1,10 @@
+module QtQuick3D.ParticleEffects
+linktarget Qt6::qtquick3dparticleeffectsplugin
+optional plugin qtquick3dparticleeffectsplugin
+classname QtQuick3DParticleEffectsPlugin
+designersupported
+typeinfo Quick3DParticleEffects.qmltypes
+depends QtQuick3D auto
+depends QtQuick3DParticles3D auto
+prefer :/qt-project.org/imports/QtQuick3D/ParticleEffects/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/Particles3D/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/Particles3D/qmldir
new file mode 100644
index 0000000000..840899a28f
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/Particles3D/qmldir
@@ -0,0 +1,9 @@
+module QtQuick3D.Particles3D
+linktarget Qt6::qtquick3dparticles3dplugin
+optional plugin qtquick3dparticles3dplugin
+classname QtQuick3DParticles3DPlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQuick3D auto
+prefer :/qt-project.org/imports/QtQuick3D/Particles3D/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/Physics/Helpers/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/Physics/Helpers/qmldir
new file mode 100644
index 0000000000..0180276165
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/Physics/Helpers/qmldir
@@ -0,0 +1,8 @@
+module QtQuick3D.Physics.Helpers
+linktarget Qt6::qtquick3dphysicshelpersplugin
+optional plugin qtquick3dphysicshelpersplugin
+classname QtQuick3DPhysicsHelpersPlugin
+typeinfo plugins.qmltypes
+depends QtQuick3DPhysics auto
+prefer :/qt-project.org/imports/QtQuick3D/Physics/Helpers/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/Physics/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/Physics/qmldir
new file mode 100644
index 0000000000..eb263336d8
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/Physics/qmldir
@@ -0,0 +1,8 @@
+module QtQuick3D.Physics
+linktarget Qt6::qquick3dphysicsplugin
+plugin qquick3dphysicsplugin
+classname QtQuick3DPhysicsPlugin
+designersupported
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtQuick3D/Physics/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/SpatialAudio/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/SpatialAudio/qmldir
new file mode 100644
index 0000000000..e913a04138
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/SpatialAudio/qmldir
@@ -0,0 +1,10 @@
+module QtQuick3D.SpatialAudio
+linktarget Qt6::quick3dspatialaudio
+plugin quick3dspatialaudioplugin
+classname QQuick3DAudioModule
+typeinfo plugins.qmltypes
+depends QtQuick
+depends QtQuick3DPrivate
+depends QtMultimedia
+prefer :/qt-project.org/imports/QtQuick3D/SpatialAudio/
+
diff --git a/tests/unit/unittest/data/qml/QtQuick3D/qmldir b/tests/unit/unittest/data/qml/QtQuick3D/qmldir
new file mode 100644
index 0000000000..4de7691565
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtQuick3D/qmldir
@@ -0,0 +1,9 @@
+module QtQuick3D
+linktarget Qt6::qquick3dplugin
+plugin qquick3dplugin
+classname QQuick3DPlugin
+designersupported
+typeinfo plugins.qmltypes
+depends QtQuick auto
+prefer :/qt-project.org/imports/QtQuick3D/
+
diff --git a/tests/unit/unittest/data/qml/QtRemoteObjects/qmldir b/tests/unit/unittest/data/qml/QtRemoteObjects/qmldir
new file mode 100644
index 0000000000..3f52d6267e
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtRemoteObjects/qmldir
@@ -0,0 +1,7 @@
+module QtRemoteObjects
+linktarget Qt6::declarative_remoteobjects
+optional plugin declarative_remoteobjectsplugin
+classname QtRemoteObjectsPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtRemoteObjects/
+
diff --git a/tests/unit/unittest/data/qml/QtScxml/qmldir b/tests/unit/unittest/data/qml/QtScxml/qmldir
new file mode 100644
index 0000000000..d72487dcb1
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtScxml/qmldir
@@ -0,0 +1,8 @@
+module QtScxml
+linktarget Qt6::declarative_scxml
+optional plugin declarative_scxmlplugin
+classname QScxmlStateMachinePlugin
+typeinfo plugins.qmltypes
+depends QtQml
+prefer :/qt-project.org/imports/QtScxml/
+
diff --git a/tests/unit/unittest/data/qml/QtSensors/qmldir b/tests/unit/unittest/data/qml/QtSensors/qmldir
new file mode 100644
index 0000000000..228471522b
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtSensors/qmldir
@@ -0,0 +1,8 @@
+module QtSensors
+linktarget Qt6::SensorsQuickplugin
+optional plugin sensorsquickplugin
+classname QtSensorsPlugin
+typeinfo plugins.qmltypes
+depends QtQml
+prefer :/qt-project.org/imports/QtSensors/
+
diff --git a/tests/unit/unittest/data/qml/QtTest/qmldir b/tests/unit/unittest/data/qml/QtTest/qmldir
new file mode 100644
index 0000000000..9ce4da2431
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtTest/qmldir
@@ -0,0 +1,14 @@
+module QtTest
+linktarget Qt6::QuickTestplugin
+optional plugin quicktestplugin
+classname QtTestPlugin
+typeinfo plugins.qmltypes
+depends QtQuick.Window auto
+prefer :/qt-project.org/imports/QtTest/
+SignalSpy 6.0 SignalSpy.qml
+SignalSpy 1.0 SignalSpy.qml
+TestCase 6.0 TestCase.qml
+TestCase 1.0 TestCase.qml
+singleton TestSchedule 6.0 TestSchedule.qml
+singleton TestSchedule 1.0 TestSchedule.qml
+
diff --git a/tests/unit/unittest/data/qml/QtTextToSpeech/qmldir b/tests/unit/unittest/data/qml/QtTextToSpeech/qmldir
new file mode 100644
index 0000000000..3ffacdb981
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtTextToSpeech/qmldir
@@ -0,0 +1,7 @@
+module QtTextToSpeech
+linktarget Qt6::TextToSpeechQml
+optional plugin texttospeechqmlplugin
+classname QtTextToSpeechPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtTextToSpeech/
+
diff --git a/tests/unit/unittest/data/qml/QtVncServer/qmldir b/tests/unit/unittest/data/qml/QtVncServer/qmldir
new file mode 100644
index 0000000000..ccef9dfd6e
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtVncServer/qmldir
@@ -0,0 +1,8 @@
+module QtVncServer
+linktarget Qt6::qquickvncplugin
+plugin qquickvncplugin
+classname QQuickVncPlugin
+typeinfo plugins.qmltypes
+depends QtQuick
+prefer :/qt-project.org/imports/QtVncServer/
+
diff --git a/tests/unit/unittest/data/qml/QtWayland/Client/TextureSharing/qmldir b/tests/unit/unittest/data/qml/QtWayland/Client/TextureSharing/qmldir
new file mode 100644
index 0000000000..c9517aa7db
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWayland/Client/TextureSharing/qmldir
@@ -0,0 +1,7 @@
+module QtWayland.Client.TextureSharing
+linktarget Qt6::WaylandTextureSharing
+plugin waylandtexturesharingplugin
+classname QWaylandTextureSharingPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWayland/Client/TextureSharing/
+
diff --git a/tests/unit/unittest/data/qml/QtWayland/Compositor/IviApplication/qmldir b/tests/unit/unittest/data/qml/QtWayland/Compositor/IviApplication/qmldir
new file mode 100644
index 0000000000..2a4e19ea91
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWayland/Compositor/IviApplication/qmldir
@@ -0,0 +1,7 @@
+module QtWayland.Compositor.IviApplication
+linktarget Qt6::WaylandCompositorIviapplication
+plugin waylandcompositoriviapplicationplugin
+classname QWaylandCompositorIviApplicationPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWayland/Compositor/IviApplication/
+
diff --git a/tests/unit/unittest/data/qml/QtWayland/Compositor/PresentationTime/qmldir b/tests/unit/unittest/data/qml/QtWayland/Compositor/PresentationTime/qmldir
new file mode 100644
index 0000000000..40e2555630
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWayland/Compositor/PresentationTime/qmldir
@@ -0,0 +1,7 @@
+module QtWayland.Compositor.PresentationTime
+linktarget Qt6::WaylandCompositorPresentationTime
+plugin waylandcompositorpresentationtimeplugin
+classname QWaylandCompositorPresentationTimePlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWayland/Compositor/PresentationTime/
+
diff --git a/tests/unit/unittest/data/qml/QtWayland/Compositor/QtShell/qmldir b/tests/unit/unittest/data/qml/QtWayland/Compositor/QtShell/qmldir
new file mode 100644
index 0000000000..851feb14c9
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWayland/Compositor/QtShell/qmldir
@@ -0,0 +1,7 @@
+module QtWayland.Compositor.QtShell
+linktarget Qt6::WaylandCompositorQtShell
+plugin waylandcompositorqtshellplugin
+classname QWaylandQtShellPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWayland/Compositor/QtShell/
+
diff --git a/tests/unit/unittest/data/qml/QtWayland/Compositor/TextureSharingExtension/qmldir b/tests/unit/unittest/data/qml/QtWayland/Compositor/TextureSharingExtension/qmldir
new file mode 100644
index 0000000000..fd11b6052c
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWayland/Compositor/TextureSharingExtension/qmldir
@@ -0,0 +1,7 @@
+module QtWayland.Compositor.TextureSharingExtension
+linktarget Qt6::WaylandTextureSharingExtension
+plugin waylandtexturesharingextensionplugin
+classname QWaylandTextureSharingExtensionPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWayland/Compositor/TextureSharingExtension/
+
diff --git a/tests/unit/unittest/data/qml/QtWayland/Compositor/WlShell/qmldir b/tests/unit/unittest/data/qml/QtWayland/Compositor/WlShell/qmldir
new file mode 100644
index 0000000000..19a44ce6b5
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWayland/Compositor/WlShell/qmldir
@@ -0,0 +1,7 @@
+module QtWayland.Compositor.WlShell
+linktarget Qt6::WaylandCompositorWLShell
+plugin waylandcompositorwlshellplugin
+classname QWaylandCompositorWlShellPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWayland/Compositor/WlShell/
+
diff --git a/tests/unit/unittest/data/qml/QtWayland/Compositor/XdgShell/qmldir b/tests/unit/unittest/data/qml/QtWayland/Compositor/XdgShell/qmldir
new file mode 100644
index 0000000000..8e04c730e4
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWayland/Compositor/XdgShell/qmldir
@@ -0,0 +1,7 @@
+module QtWayland.Compositor.XdgShell
+linktarget Qt6::WaylandCompositorXdgShell
+plugin waylandcompositorxdgshellplugin
+classname QWaylandCompositorXdgShellPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWayland/Compositor/XdgShell/
+
diff --git a/tests/unit/unittest/data/qml/QtWayland/Compositor/qmldir b/tests/unit/unittest/data/qml/QtWayland/Compositor/qmldir
new file mode 100644
index 0000000000..aba6cc89dc
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWayland/Compositor/qmldir
@@ -0,0 +1,12 @@
+module QtWayland.Compositor
+linktarget Qt6::qwaylandcompositorplugin
+optional plugin qwaylandcompositorplugin
+classname QWaylandCompositorPlugin
+typeinfo WaylandCompositor.qmltypes
+depends QtQuick
+prefer :/qt-project.org/imports/QtWayland/Compositor/
+WaylandCursorItem 6.0 qmlfiles/WaylandCursorItem.qml
+WaylandCursorItem 1.0 qmlfiles/WaylandCursorItem.qml
+WaylandOutputWindow 6.0 qmlfiles/WaylandOutputWindow.qml
+WaylandOutputWindow 1.0 qmlfiles/WaylandOutputWindow.qml
+
diff --git a/tests/unit/unittest/data/qml/QtWebChannel/qmldir b/tests/unit/unittest/data/qml/QtWebChannel/qmldir
new file mode 100644
index 0000000000..4fb6b7116d
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWebChannel/qmldir
@@ -0,0 +1,7 @@
+module QtWebChannel
+linktarget Qt6::webchannel
+plugin webchannelplugin
+classname QWebChannelPlugin
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWebChannel/
+
diff --git a/tests/unit/unittest/data/qml/QtWebEngine/ControlsDelegates/qmldir b/tests/unit/unittest/data/qml/QtWebEngine/ControlsDelegates/qmldir
new file mode 100644
index 0000000000..6c36103476
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWebEngine/ControlsDelegates/qmldir
@@ -0,0 +1,36 @@
+module QtWebEngine.ControlsDelegates
+linktarget Qt6::qtwebenginequickdelegatesplugin
+optional plugin qtwebenginequickdelegatesplugin
+classname QtWebEngine_ControlsDelegatesPlugin
+typeinfo WebEngineQuickDelegatesQml.qmltypes
+depends QtQuickControls2
+prefer :/qt-project.org/imports/QtWebEngine/ControlsDelegates/
+AlertDialog 6.0 AlertDialog.qml
+AlertDialog 1.0 AlertDialog.qml
+AuthenticationDialog 6.0 AuthenticationDialog.qml
+AuthenticationDialog 1.0 AuthenticationDialog.qml
+AutofillPopup 6.0 AutofillPopup.qml
+AutofillPopup 1.0 AutofillPopup.qml
+ColorDialog 6.0 ColorDialog.qml
+ColorDialog 1.0 ColorDialog.qml
+ConfirmDialog 6.0 ConfirmDialog.qml
+ConfirmDialog 1.0 ConfirmDialog.qml
+DirectoryPicker 6.0 DirectoryPicker.qml
+DirectoryPicker 1.0 DirectoryPicker.qml
+FilePicker 6.0 FilePicker.qml
+FilePicker 1.0 FilePicker.qml
+Menu 6.0 Menu.qml
+Menu 1.0 Menu.qml
+MenuItem 6.0 MenuItem.qml
+MenuItem 1.0 MenuItem.qml
+MenuSeparator 6.0 MenuSeparator.qml
+MenuSeparator 1.0 MenuSeparator.qml
+PromptDialog 6.0 PromptDialog.qml
+PromptDialog 1.0 PromptDialog.qml
+ToolTip 6.0 ToolTip.qml
+ToolTip 1.0 ToolTip.qml
+TouchHandle 6.0 TouchHandle.qml
+TouchHandle 1.0 TouchHandle.qml
+TouchSelectionMenu 6.0 TouchSelectionMenu.qml
+TouchSelectionMenu 1.0 TouchSelectionMenu.qml
+
diff --git a/tests/unit/unittest/data/qml/QtWebEngine/qmldir b/tests/unit/unittest/data/qml/QtWebEngine/qmldir
new file mode 100644
index 0000000000..0709c060c4
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWebEngine/qmldir
@@ -0,0 +1,9 @@
+module QtWebEngine
+linktarget Qt6::qtwebenginequickplugin
+plugin qtwebenginequickplugin
+classname QtWebEnginePlugin
+typeinfo plugins.qmltypes
+depends QtQuick auto
+depends QtWebChannel auto
+prefer :/qt-project.org/imports/QtWebEngine/
+
diff --git a/tests/unit/unittest/data/qml/QtWebSockets/qmldir b/tests/unit/unittest/data/qml/QtWebSockets/qmldir
new file mode 100644
index 0000000000..24224f087c
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWebSockets/qmldir
@@ -0,0 +1,7 @@
+module QtWebSockets
+linktarget Qt6::qmlwebsockets
+plugin qmlwebsocketsplugin
+classname QtWebSocketsDeclarativeModule
+typeinfo plugins.qmltypes
+prefer :/qt-project.org/imports/QtWebSockets/
+
diff --git a/tests/unit/unittest/data/qml/QtWebView/qmldir b/tests/unit/unittest/data/qml/QtWebView/qmldir
new file mode 100644
index 0000000000..3174233870
--- /dev/null
+++ b/tests/unit/unittest/data/qml/QtWebView/qmldir
@@ -0,0 +1,8 @@
+module QtWebView
+linktarget Qt6::qtwebviewquickplugin
+plugin qtwebviewquickplugin
+classname QWebViewQuickPlugin
+typeinfo plugins.qmltypes
+depends QtWebEngine 2.0
+prefer :/qt-project.org/imports/QtWebView/
+
diff --git a/tests/unit/unittest/externaldependenciesmock.h b/tests/unit/unittest/externaldependenciesmock.h
new file mode 100644
index 0000000000..368024edc1
--- /dev/null
+++ b/tests/unit/unittest/externaldependenciesmock.h
@@ -0,0 +1,45 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#pragma once
+
+#include "googletest.h"
+
+#include <externaldependenciesinterface.h>
+
+#include <QUrl>
+
+class ExternalDependenciesMock : public QmlDesigner::ExternalDependenciesInterface
+{
+public:
+ MOCK_METHOD(double, formEditorDevicePixelRatio, (), (const, override));
+ MOCK_METHOD(QString, defaultPuppetFallbackDirectory, (), (const, override));
+ MOCK_METHOD(QString, qmlPuppetFallbackDirectory, (), (const, override));
+ MOCK_METHOD(QString, defaultPuppetToplevelBuildDirectory, (), (const, override));
+ MOCK_METHOD(QUrl, projectUrl, (), (const, override));
+ MOCK_METHOD(QString, currentProjectDirPath, (), (const, override));
+ MOCK_METHOD(QList<QColor>, designerSettingsEdit3DViewBackgroundColor, (), (const, override));
+ MOCK_METHOD(QColor, designerSettingsEdit3DViewGridColor, (), (const, override));
+ MOCK_METHOD(QUrl, currentResourcePath, (), (const, override));
+ MOCK_METHOD(void, parseItemLibraryDescriptions, (), (override));
+ MOCK_METHOD(const QmlDesigner::DesignerSettings &, designerSettings, (), (const, override));
+ MOCK_METHOD(void, undoOnCurrentDesignDocument, (), (override));
+ MOCK_METHOD(bool,
+ viewManagerUsesRewriterView,
+ (class QmlDesigner::RewriterView * view),
+ (const, override));
+ MOCK_METHOD(void, viewManagerDiableWidgets, (), (override));
+ MOCK_METHOD(QString, itemLibraryImportUserComponentsTitle, (), (const, override));
+ MOCK_METHOD(bool, isQt6Import, (), (const, override));
+ MOCK_METHOD(bool, hasStartupTarget, (), (const, override));
+ MOCK_METHOD(QmlDesigner::PuppetStartData,
+ puppetStartData,
+ (const class QmlDesigner::Model &model),
+ (const, override));
+ MOCK_METHOD(bool, instantQmlTextUpdate, (), (const, override));
+ MOCK_METHOD(Utils::FilePath, qmlPuppetPath, (), (const, override));
+ MOCK_METHOD(QStringList, modulePaths, (), (const, override));
+ MOCK_METHOD(QStringList, projectModulePaths, (), (const, override));
+ MOCK_METHOD(bool, isQt6Project, (), (const, override));
+ MOCK_METHOD(QString, qtQuickVersion, (), (const, override));
+};
diff --git a/tests/unit/unittest/modulescanner-test.cpp b/tests/unit/unittest/modulescanner-test.cpp
index 062256408e..f3bbbf23e9 100644
--- a/tests/unit/unittest/modulescanner-test.cpp
+++ b/tests/unit/unittest/modulescanner-test.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+#include "externaldependenciesmock.h"
#include "googletest.h"
#include <projectstorage/modulescanner.h>
@@ -9,6 +10,8 @@
namespace {
+QLatin1String qmlModulesPath(TESTDATA_DIR "/qml");
+
template<typename Matcher>
auto UrlProperty(const Matcher &matcher)
{
@@ -21,6 +24,27 @@ auto VersionProperty(const Matcher &matcher)
return Property(&QmlDesigner::Import::version, matcher);
}
+template<typename Matcher>
+auto CorePropertiesHave(const Matcher &matcher)
+{
+ return AllOf(Contains(AllOf(UrlProperty("QtQuick"), matcher)),
+ Contains(AllOf(UrlProperty("QtQuick.Controls"), matcher)),
+ Contains(AllOf(UrlProperty("QtQuick3D"), matcher)),
+ Contains(AllOf(UrlProperty("QtQuick3D.Helpers"), matcher)),
+ Contains(AllOf(UrlProperty("QtQuick3D.Particles3D"), matcher)));
+}
+
+template<typename Matcher>
+auto NonCorePropertiesHave(const Matcher &matcher)
+{
+ return Not(Contains(AllOf(UrlProperty(AnyOf(Eq("QtQuick"),
+ Eq("QtQuick.Controls"),
+ Eq("QtQuick3D"),
+ Eq("QtQuick3D.Helpers"),
+ Eq("QtQuick3D.Particles3D"))),
+ matcher)));
+}
+
MATCHER(HasDuplicates, std::string(negation ? "hasn't duplicates" : "has dublicates"))
{
auto values = arg;
@@ -33,10 +57,12 @@ MATCHER(HasDuplicates, std::string(negation ? "hasn't duplicates" : "has dublica
class ModuleScanner : public testing::Test
{
protected:
+ NiceMock<ExternalDependenciesMock> externalDependenciesMock;
QmlDesigner::ModuleScanner scanner{[](QStringView moduleName) {
return moduleName.endsWith(u"impl");
},
- QmlDesigner::VersionScanning::No};
+ QmlDesigner::VersionScanning::No,
+ externalDependenciesMock};
};
TEST_F(ModuleScanner, ReturnEmptyOptionalForWrongPath)
@@ -48,21 +74,21 @@ TEST_F(ModuleScanner, ReturnEmptyOptionalForWrongPath)
TEST_F(ModuleScanner, GetQtQuick)
{
- scanner.scan(QStringList{QT6_INSTALL_PREFIX});
+ scanner.scan(QStringList{qmlModulesPath});
ASSERT_THAT(scanner.modules(), Contains(UrlProperty("QtQuick")));
}
TEST_F(ModuleScanner, SkipEmptyModules)
{
- scanner.scan(QStringList{QT6_INSTALL_PREFIX});
+ scanner.scan(QStringList{qmlModulesPath});
ASSERT_THAT(scanner.modules(), Not(Contains(UrlProperty(IsEmpty()))));
}
TEST_F(ModuleScanner, UseSkipFunction)
{
- scanner.scan(QStringList{QT6_INSTALL_PREFIX});
+ scanner.scan(QStringList{qmlModulesPath});
ASSERT_THAT(scanner.modules(), Not(Contains(UrlProperty(EndsWith(QStringView{u"impl"})))));
}
@@ -72,7 +98,8 @@ TEST_F(ModuleScanner, Version)
QmlDesigner::ModuleScanner scanner{[](QStringView moduleName) {
return moduleName.endsWith(u"impl");
},
- QmlDesigner::VersionScanning::Yes};
+ QmlDesigner::VersionScanning::Yes,
+ externalDependenciesMock};
scanner.scan(QStringList{TESTDATA_DIR "/modulescanner"});
@@ -84,7 +111,8 @@ TEST_F(ModuleScanner, NoVersion)
QmlDesigner::ModuleScanner scanner{[](QStringView moduleName) {
return moduleName.endsWith(u"impl");
},
- QmlDesigner::VersionScanning::No};
+ QmlDesigner::VersionScanning::No,
+ externalDependenciesMock};
scanner.scan(QStringList{TESTDATA_DIR "/modulescanner"});
@@ -94,18 +122,43 @@ TEST_F(ModuleScanner, NoVersion)
TEST_F(ModuleScanner, Duplicates)
{
- scanner.scan(QStringList{QT6_INSTALL_PREFIX});
+ scanner.scan(QStringList{qmlModulesPath});
ASSERT_THAT(scanner.modules(), Not(HasDuplicates()));
}
TEST_F(ModuleScanner, DontAddModulesAgain)
{
- scanner.scan(QStringList{QT6_INSTALL_PREFIX});
+ scanner.scan(QStringList{qmlModulesPath});
- scanner.scan(QStringList{QT6_INSTALL_PREFIX});
+ scanner.scan(QStringList{qmlModulesPath});
ASSERT_THAT(scanner.modules(), Not(HasDuplicates()));
}
+TEST_F(ModuleScanner, SetNoVersionForQtQuickVersion)
+{
+ scanner.scan(QStringList{qmlModulesPath});
+
+ ASSERT_THAT(scanner.modules(), CorePropertiesHave(VersionProperty(QString{})));
+}
+
+TEST_F(ModuleScanner, SetVersionForQtQuickVersion)
+{
+ ON_CALL(externalDependenciesMock, qtQuickVersion()).WillByDefault(Return(QString{"6.4"}));
+
+ scanner.scan(QStringList{qmlModulesPath});
+
+ ASSERT_THAT(scanner.modules(), CorePropertiesHave(VersionProperty(u"6.4")));
+}
+
+TEST_F(ModuleScanner, DontSetVersionForNonQtQuickVersion)
+{
+ ON_CALL(externalDependenciesMock, qtQuickVersion()).WillByDefault(Return(QString{"6.4"}));
+
+ scanner.scan(QStringList{qmlModulesPath});
+
+ ASSERT_THAT(scanner.modules(), NonCorePropertiesHave(VersionProperty(QString{})));
+}
+
} // namespace