From f2eb7b0204bfd6474fb755d225d47dd2597af35a Mon Sep 17 00:00:00 2001 From: David Faure Date: Tue, 27 Feb 2018 15:48:07 +0100 Subject: [PATCH] QMimeDatabase: fix regression in alias resolving The refactoring to support multiple providers broke alias resolving (e.g. "text/directory" would be an invalid mimetype, instead of being resolved to "text/vcard"). The unittest didn't catch it because most of it was running with a single mime directory (and therefore a single provider, in the new model). Fixed by re-running a number of test methods once we have a second mime directory. Change-Id: Ib5da89ba79c11ed41813b2aff4bc71c30afcde7d Reviewed-by: Thiago Macieira --- src/corelib/mimetypes/qmimeprovider.cpp | 4 +-- .../qmimedatabase/tst_qmimedatabase.cpp | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp index ec0a6bf0ef..90a16886a9 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -401,7 +401,7 @@ QString QMimeBinaryProvider::resolveAlias(const QString &name) return QLatin1String(mimeType); } } - return name; + return QString(); } void QMimeBinaryProvider::addAliases(const QString &name, QStringList &result) @@ -729,7 +729,7 @@ void QMimeXMLProvider::addAliases(const QString &name, QStringList &result) QString QMimeXMLProvider::resolveAlias(const QString &name) { - return m_aliases.value(name, name); + return m_aliases.value(name); } void QMimeXMLProvider::addAlias(const QString &alias, const QString &name) diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp index 995fbc13c0..abc06bfe85 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -1045,6 +1045,31 @@ void tst_QMimeDatabase::installNewLocalMimeType() QCOMPARE(db.mimeTypeForFile(qmlTestFile).name(), QString::fromLatin1("text/x-qml")); + // Now that we have two directories with mime definitions, check that everything still works + inheritance(); + if (QTest::currentTestFailed()) + return; + + aliases(); + if (QTest::currentTestFailed()) + return; + + icons(); + if (QTest::currentTestFailed()) + return; + + comment(); + if (QTest::currentTestFailed()) + return; + + mimeTypeForFileWithContent(); + if (QTest::currentTestFailed()) + return; + + mimeTypeForName(); + if (QTest::currentTestFailed()) + return; + // Now test removing local mimetypes for (int i = 1 ; i <= 3 ; ++i) QFile::remove(destDir + QStringLiteral("invalid-magic%1.xml").arg(i));