QSqlError: fix redundant space in text() output

QSqlError::text() returns single space if QSqlError is not valid. In
addition, it adds space in case one of driverText or databaseText
is empty.

Change condition upon which space is added between databaseText and
driverText, and update unit test to cover these cases.

Fixes: QTBUG-74575
Change-Id: I52cce9b0287a523d7ff9059cff38bcd8b26eb303
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
bb10
Vincas Dargis 2019-03-22 10:40:12 +02:00
parent a57ac1b20e
commit b58c723404
2 changed files with 25 additions and 1 deletions

View File

@ -365,7 +365,7 @@ QString QSqlError::nativeErrorCode() const
QString QSqlError::text() const
{
QString result = d->databaseError;
if (!d->databaseError.endsWith(QLatin1String("\n")))
if (!d->databaseError.isEmpty() && !d->driverError.isEmpty() && !d->databaseError.endsWith(QLatin1String("\n")))
result += QLatin1Char(' ');
result += d->driverError;
return result;

View File

@ -46,6 +46,7 @@ private slots:
void construction();
void moveOperator();
void operators();
void qtbug_74575();
};
tst_QSqlError::tst_QSqlError()
@ -113,6 +114,7 @@ void tst_QSqlError::construction()
QVERIFY(!obj4.isValid());
QCOMPARE(obj4.driverText(), QString());
QCOMPARE(obj4.databaseText(), QString());
QCOMPARE(obj4.text(), QString());
QCOMPARE(obj4.type(), QSqlError::NoError);
QCOMPARE(obj4.number(), -1);
QCOMPARE(obj4.nativeErrorCode(), QString());
@ -180,6 +182,28 @@ void tst_QSqlError::operators()
QVERIFY(error1 != error3);
}
void tst_QSqlError::qtbug_74575()
{
const QString driverText(QStringLiteral("drivertext"));
const QString databaseText(QStringLiteral("databasetext"));
const QString databaseTextNewline(QStringLiteral("databasetext\n"));
QSqlError error1(driverText, databaseText,
QSqlError::UnknownError, QStringLiteral("123"));
QCOMPARE(error1.text(), databaseText + QLatin1Char(' ') + driverText);
QSqlError error2(QString(), databaseText,
QSqlError::UnknownError, QStringLiteral("123"));
QCOMPARE(error2.text(), databaseText);
QSqlError error3(driverText, QString(),
QSqlError::UnknownError, QStringLiteral("123"));
QCOMPARE(error3.text(), driverText);
QSqlError error4(driverText, databaseTextNewline,
QSqlError::UnknownError, QStringLiteral("123"));
QCOMPARE(error4.text(), databaseTextNewline + driverText);
}
QTEST_MAIN(tst_QSqlError)
#include "tst_qsqlerror.moc"