diff options
author | David Faure <david.faure@kdab.com> | 2023-08-28 18:28:28 +0200 |
---|---|---|
committer | David Faure <david.faure@kdab.com> | 2023-09-01 15:04:33 +0200 |
commit | 1b39e61a775d70ee96287e9f0e418cb5741e6638 (patch) | |
tree | 1fe758fa5b5a9aa565ee3f1191fd259104c4ecae /tests/auto/corelib/mimetypes/qmimedatabase | |
parent | d4eda5d34d29c965e625300e2136250fabd0aee5 (diff) |
QMimeDatabase: fix detection of pattern conflict in different prefixes
Installing a second mimetype with *.txt as glob had a different
effect depending on whether it was installed into the same prefix
or a different prefix as the one where text/plain is installed.
Pick-to: 6.6
Change-Id: I7f54b8efe22f620eb57257745c48fe5402c87626
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib/mimetypes/qmimedatabase')
4 files changed, 28 insertions, 10 deletions
diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt index 84990f1466..187f224100 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt +++ b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt @@ -38,6 +38,7 @@ set(testdata_resource_files "../qml-again.xml" "../test.qml" "../text-x-objcsrc.xml" + "../text-plain-subclass.xml" "../yast2-metapackage-handler-mimetypes.xml" ) diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt index da910bd919..31fdd48dc5 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt +++ b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt @@ -38,6 +38,7 @@ set(testdata_resource_files "../qml-again.xml" "../test.qml" "../text-x-objcsrc.xml" + "../text-plain-subclass.xml" "../yast2-metapackage-handler-mimetypes.xml" ) diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/text-plain-subclass.xml b/tests/auto/corelib/mimetypes/qmimedatabase/text-plain-subclass.xml new file mode 100644 index 0000000000..7b5cb7506d --- /dev/null +++ b/tests/auto/corelib/mimetypes/qmimedatabase/text-plain-subclass.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> + <mime-type type="text/x-microdvd"> + <comment>MicroDVD subtitles</comment> + <sub-class-of type="text/plain"/> + <magic priority="50"> + <match type="string" value="{1}" offset="0"/> + <match type="string" value="{0}" offset="0"/> + <match type="string" value="}{" offset="0:6"/> + </magic> + <generic-icon name="text-x-generic"/> + <glob pattern="*.sub"/> + <glob pattern="*.txt"/> + </mime-type> +</mime-info> diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp index 80a664754d..40100789da 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -30,16 +30,15 @@ using namespace Qt::StringLiterals; -static const char *const additionalMimeFiles[] = { - "yast2-metapackage-handler-mimetypes.xml", - "qml-again.xml", - "text-x-objcsrc.xml", - "invalid-magic1.xml", - "invalid-magic2.xml", - "invalid-magic3.xml", - "magic-and-hierarchy.xml", - 0 -}; +static const char *const additionalMimeFiles[] = { "yast2-metapackage-handler-mimetypes.xml", + "qml-again.xml", + "text-x-objcsrc.xml", + "text-plain-subclass.xml", + "invalid-magic1.xml", + "invalid-magic2.xml", + "invalid-magic3.xml", + "magic-and-hierarchy.xml", + 0 }; static const auto s_resourcePrefix = ":/qt-project.org/qmime/"_L1; static const auto s_inodeMimetype = "inode/directory"_L1; @@ -1201,6 +1200,8 @@ void tst_QMimeDatabase::installNewLocalMimeType() QVERIFY(objcsrc.isValid()); QCOMPARE(objcsrc.globPatterns(), QStringList()); } + QCOMPARE(db.mimeTypeForFile(QLatin1String("foo.txt"), QMimeDatabase::MatchExtension).name(), + QString::fromLatin1("text/plain")); // Test that a double-definition of a mimetype doesn't lead to sniffing ("conflicting globs"). const QString qmlTestFile = s_resourcePrefix + "test.qml"_L1; |