Fix tst_QFontDatabase::aliases failure with ambiguous font

If the first font in the families list happens to have been
disambiguated because of duplicates, two things went wrong:

1. hasFamily() would return false for the font family, because
it does not disambiguate when checking for the family name and
only checks if the families list contains the exact string.

2. Adding aliases to the full disambiguated string is not supported,
only the family name.

The first issue has been reported separately as QTBUG-89068.

The test failure is fixed by just avoiding the fonts that
are ambiguous in the test, as it really doesn't matter which
font we pick.

Fixes: QTBUG-89008
Pick-to: 5.15 6.0
Change-Id: I829778c2e7bb6090475c34dcf9cdce58862729d6
Reviewed-by: Liang Qi <liang.qi@qt.io>
This commit is contained in:
Eskil Abrahamsen Blomfeldt 2020-12-02 14:42:16 +01:00
parent e12e2b43b7
commit 34fa01be82
1 changed files with 12 additions and 1 deletions

View File

@ -303,7 +303,18 @@ void tst_QFontDatabase::aliases()
{
const QStringList families = QFontDatabase::families();
QVERIFY(!families.isEmpty());
const QString firstFont = families.front();
QString firstFont;
for (int i = 0; i < families.size(); ++i) {
if (!families.at(i).contains('[')) {
firstFont = families.at(i);
break;
}
}
if (firstFont.isEmpty())
QSKIP("Skipped because there are no unambiguous font families on the system.");
QVERIFY(QFontDatabase::hasFamily(firstFont));
const QString alias = QStringLiteral("AliasToFirstFont") + firstFont;
QVERIFY(!QFontDatabase::hasFamily(alias));