summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
authorDavid Faure <david.faure@kdab.com>2023-09-12 23:26:47 +0200
committerDavid Faure <david.faure@kdab.com>2023-09-13 13:45:04 +0200
commit4e9944e6c8a456353d243ab268cb0f01ff006faa (patch)
tree688c3cde3f6247ddadb73823e188a67624de3eb8 /tests/auto/corelib
parent994311a66bd31983bec5d75d87f5e03f53f14def (diff)
QMimeDatabase: collect glob patterns from all locations
A QMimeTypePrivate used to belong to a single provider, which would provide the complete data for it. But since the redesign in commit 7a5644d6481a3c1a741677, each provider represents is a single mime directory, and the merging happens at the QMimeDatabase level. So we need a QMimeType[Private] to be just a name (a "request" for information about this mimetype) and the information for that mimetype is retrieved on demand by querying the providers and either stopping at the first one (e.g. for icons) or merging the data from all of them (e.g. for glob patterns). The XML provider was using QMimeTypePrivate as data storage, give it its own struct QMimeTypeXMLData for that purpose instead. Task-number: QTBUG-116905 Change-Id: Ia0e0d94aa899720dc0b908f40c25317473005af4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/add-extension.xml7
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp6
-rw-r--r--tests/auto/corelib/mimetypes/qmimetype/tst_qmimetype.cpp111
5 files changed, 24 insertions, 102 deletions
diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/add-extension.xml b/tests/auto/corelib/mimetypes/qmimedatabase/add-extension.xml
new file mode 100644
index 0000000000..c4141e0f70
--- /dev/null
+++ b/tests/auto/corelib/mimetypes/qmimedatabase/add-extension.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="image/jpeg">
+ <glob pattern="*.jnewext"/>
+ <comment>JPEG Image</comment>
+ </mime-type>
+</mime-info>
diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt
index 7d83bd2c2f..9a70666b07 100644
--- a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt
+++ b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt
@@ -30,6 +30,7 @@ qt_internal_add_test(tst_qmimedatabase-cache
#"mime/packages/freedesktop.org.xml"
#)
set(testdata_resource_files
+ "../add-extension.xml"
"../invalid-magic1.xml"
"../invalid-magic2.xml"
"../invalid-magic3.xml"
diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt
index e9819cbb1e..205d3c362b 100644
--- a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt
+++ b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt
@@ -30,6 +30,7 @@ qt_internal_add_test(tst_qmimedatabase-xml
#"mime/packages/freedesktop.org.xml"
#)
set(testdata_resource_files
+ "../add-extension.xml"
"../invalid-magic1.xml"
"../invalid-magic2.xml"
"../invalid-magic3.xml"
diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp
index afd31210b2..660ebf9680 100644
--- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp
+++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp
@@ -38,6 +38,7 @@ static const std::array additionalGlobalMimeFiles = {
};
static const std::array additionalLocalMimeFiles = {
+ "add-extension.xml", // adds *.jnewext to image/jpeg
"yast2-metapackage-handler-mimetypes.xml",
"qml-again.xml",
"text-x-objcsrc.xml",
@@ -1229,6 +1230,11 @@ void tst_QMimeDatabase::installNewLocalMimeType()
QCOMPARE(mimes.at(0).name(), u"video/webm");
}
+ // QTBUG-116905: globPatterns() should merge all locations
+ // add-extension.xml adds *.jnewext
+ const QStringList expectedJpegPatterns{ "*.jpg", "*.jpeg", "*.jpe", "*.jnewext" };
+ QCOMPARE(db.mimeTypeForName(QStringLiteral("image/jpeg")).globPatterns(), expectedJpegPatterns);
+
// Now that we have two directories with mime definitions, check that everything still works
inheritance();
if (QTest::currentTestFailed())
diff --git a/tests/auto/corelib/mimetypes/qmimetype/tst_qmimetype.cpp b/tests/auto/corelib/mimetypes/qmimetype/tst_qmimetype.cpp
index fda12298fe..50183ca4e0 100644
--- a/tests/auto/corelib/mimetypes/qmimetype/tst_qmimetype.cpp
+++ b/tests/auto/corelib/mimetypes/qmimetype/tst_qmimetype.cpp
@@ -21,7 +21,6 @@ private slots:
void name();
void genericIconName();
void iconName();
- void suffixes();
void gadget();
};
@@ -36,52 +35,15 @@ void tst_qmimetype::initTestCase()
static QString qMimeTypeName()
{
- static const QString result ("No name of the MIME type");
+ static const QString result("group/fake-mime");
return result;
}
-static QString qMimeTypeGenericIconName()
-{
- static const QString result ("No file name of an icon image that represents the MIME type");
- return result;
-}
-
-static QString qMimeTypeIconName()
-{
- static const QString result ("No file name of an icon image that represents the MIME type");
- return result;
-}
-
-static QStringList buildQMimeTypeFilenameExtensions()
-{
- QStringList result;
- result << QString::fromLatin1("*.png");
- return result;
-}
-
-static QStringList qMimeTypeGlobPatterns()
-{
- static const QStringList result (buildQMimeTypeFilenameExtensions());
- return result;
-}
-
-// ------------------------------------------------------------------------------------------------
-
-QMIMETYPE_BUILDER_FROM_RVALUE_REFS
-
// ------------------------------------------------------------------------------------------------
void tst_qmimetype::isValid()
{
- QMimeType instantiatedQMimeType (
- buildQMimeType (
- qMimeTypeName(),
- qMimeTypeGenericIconName(),
- qMimeTypeIconName(),
- qMimeTypeGlobPatterns()
- )
- );
-
+ QMimeType instantiatedQMimeType{ QMimeTypePrivate(qMimeTypeName()) };
QVERIFY(instantiatedQMimeType.isValid());
QMimeType otherQMimeType (instantiatedQMimeType);
@@ -98,23 +60,8 @@ void tst_qmimetype::isValid()
void tst_qmimetype::name()
{
- QMimeType instantiatedQMimeType (
- buildQMimeType (
- qMimeTypeName(),
- qMimeTypeGenericIconName(),
- qMimeTypeIconName(),
- qMimeTypeGlobPatterns()
- )
- );
-
- QMimeType otherQMimeType (
- buildQMimeType (
- QString(),
- qMimeTypeGenericIconName(),
- qMimeTypeIconName(),
- qMimeTypeGlobPatterns()
- )
- );
+ QMimeType instantiatedQMimeType{ QMimeTypePrivate(qMimeTypeName()) };
+ QMimeType otherQMimeType{ QMimeTypePrivate(QString()) };
// Verify that the Name is part of the equality test:
QCOMPARE(instantiatedQMimeType.name(), qMimeTypeName());
@@ -127,63 +74,23 @@ void tst_qmimetype::name()
void tst_qmimetype::genericIconName()
{
- QMimeType instantiatedQMimeType (
- buildQMimeType (
- qMimeTypeName(),
- qMimeTypeGenericIconName(),
- qMimeTypeIconName(),
- qMimeTypeGlobPatterns()
- )
- );
-
- QCOMPARE(instantiatedQMimeType.genericIconName(), qMimeTypeGenericIconName());
+ const QMimeType instantiatedQMimeType{ QMimeTypePrivate(qMimeTypeName()) };
+ QCOMPARE(instantiatedQMimeType.genericIconName(), "group-x-generic");
}
// ------------------------------------------------------------------------------------------------
void tst_qmimetype::iconName()
{
- QMimeType instantiatedQMimeType (
- buildQMimeType (
- qMimeTypeName(),
- qMimeTypeGenericIconName(),
- qMimeTypeIconName(),
- qMimeTypeGlobPatterns()
- )
- );
-
- QCOMPARE(instantiatedQMimeType.iconName(), qMimeTypeIconName());
-}
-
-// ------------------------------------------------------------------------------------------------
-
-void tst_qmimetype::suffixes()
-{
- QMimeType instantiatedQMimeType (
- buildQMimeType (
- qMimeTypeName(),
- qMimeTypeGenericIconName(),
- qMimeTypeIconName(),
- qMimeTypeGlobPatterns()
- )
- );
-
- QCOMPARE(instantiatedQMimeType.globPatterns(), qMimeTypeGlobPatterns());
- QCOMPARE(instantiatedQMimeType.suffixes(), QStringList() << QString::fromLatin1("png"));
+ const QMimeType instantiatedQMimeType{ QMimeTypePrivate(qMimeTypeName()) };
+ QCOMPARE(instantiatedQMimeType.iconName(), "group-fake-mime");
}
// ------------------------------------------------------------------------------------------------
void tst_qmimetype::gadget()
{
- QMimeType instantiatedQMimeType (
- buildQMimeType (
- qMimeTypeName(),
- qMimeTypeGenericIconName(),
- qMimeTypeIconName(),
- qMimeTypeGlobPatterns()
- )
- );
+ QMimeType instantiatedQMimeType = QMimeDatabase().mimeTypeForName("text/plain");
const QMetaObject *metaObject = &instantiatedQMimeType.staticMetaObject;