QTest::ignoreMessage(): interpret the message in UTF-8

The message to ignore is given in source code, hence UTF-8; it was
being ingested as local 8-bit, which lead to problems when a debug
message wasn't 7-bit clean and the system's native encoding wasn't
UTF-8. Modified QtTest's selftest to check encoding failure.

Pick-to: 5.15
Change-Id: I898744a450115b6d2ee992f1d3b36d8efaeeff7e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Edward Welbourne 2020-04-29 14:11:39 +02:00
parent e325bd68fd
commit 2491ee98b1
2 changed files with 11 additions and 3 deletions

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtTest module of the Qt Toolkit.
@ -521,7 +521,7 @@ void QTestLog::ignoreMessage(QtMsgType type, const char *msg)
{
QTEST_ASSERT(msg);
QTest::IgnoreResultList::append(QTest::ignoreResultList, type, QString::fromLocal8Bit(msg));
QTest::IgnoreResultList::append(QTest::ignoreResultList, type, QString::fromUtf8(msg));
}
#if QT_CONFIG(regularexpression)

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@ -80,6 +80,14 @@ void tst_Warnings::testWarnings()
// accept redundant space at end to keep compatibility with Qt < 5.2
QTest::ignoreMessage(QtDebugMsg, "Bubu ");
qDebug() << "Bubu";
// Cope with non-ASCII messages; should be understood as UTF-8 (it comes
// from source code on both sides), even if the system encoding is
// different:
QTest::ignoreMessage(QtDebugMsg, "Hej v\xc3\xa4rlden");
qDebug() << "Hej v\xc3\xa4rlden";
QTest::ignoreMessage(QtInfoMsg, "Hej v\xc3\xa4rlden");
qInfo() << "Hej v\xc3\xa4rlden";
}
void tst_Warnings::testMissingWarnings()