Fix QFAIL() to interract correctly with QEXPECT_FAIL()
Previously, it went direct to QTestResults::addFailure() without going via the checking for expected failure. Add QTestResults::fail() to take care of this checking, as for verify() and compare(). Tidied up the code implementing expected failure and QFAIL(), while I was about it. Adjusted an existing test to verify that expecting a QFAIL() works, by using QFAIL() instead of QVERIFY(false). Remove the QVERIFY(false) whose comment brought this to my attention. [ChangeLog][QtTestLib][QFAIL] QEXPECT_FAIL() now correctly anticipates a subsequent QFAIL(). Previously QFAIL() counted as a fail regardless. Change-Id: Icc28cf70e5ff3006363791ea03aa01f2f591eb71 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
parent
b62fcccb15
commit
a93a9ea915
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Copyright (C) 2016 Intel Corporation.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
@ -2019,9 +2019,9 @@ int QTest::qExec(QObject *testObject, const QStringList &arguments)
|
||||
|
||||
/*! \internal
|
||||
*/
|
||||
void QTest::qFail(const char *statementStr, const char *file, int line)
|
||||
void QTest::qFail(const char *message, const char *file, int line)
|
||||
{
|
||||
QTestResult::addFailure(statementStr, file, line);
|
||||
QTestResult::fail(message, file, line);
|
||||
}
|
||||
|
||||
/*! \internal
|
||||
|
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtTest module of the Qt Toolkit.
|
||||
@ -310,7 +310,7 @@ namespace QTest
|
||||
|
||||
Q_TESTLIB_EXPORT bool qVerify(bool statement, const char *statementStr, const char *description,
|
||||
const char *file, int line);
|
||||
Q_TESTLIB_EXPORT void qFail(const char *statementStr, const char *file, int line);
|
||||
Q_TESTLIB_EXPORT void qFail(const char *message, const char *file, int line);
|
||||
Q_TESTLIB_EXPORT void qSkip(const char *message, const char *file, int line);
|
||||
Q_TESTLIB_EXPORT bool qExpectFail(const char *dataIndex, const char *comment, TestFailMode mode,
|
||||
const char *file, int line);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtTest module of the Qt Toolkit.
|
||||
@ -237,7 +237,6 @@ bool QTestResult::expectFail(const char *dataIndex, const char *comment,
|
||||
|
||||
if (QTest::expectFailMode) {
|
||||
delete[] comment;
|
||||
clearExpectFail();
|
||||
addFailure("Already expecting a fail", file, line);
|
||||
return false;
|
||||
}
|
||||
@ -278,6 +277,11 @@ static bool checkStatement(bool statement, const char *msg, const char *file, in
|
||||
return false;
|
||||
}
|
||||
|
||||
void QTestResult::fail(const char *msg, const char *file, int line)
|
||||
{
|
||||
checkStatement(false, msg, file, line);
|
||||
}
|
||||
|
||||
bool QTestResult::verify(bool statement, const char *statementStr,
|
||||
const char *description, const char *file, int line)
|
||||
{
|
||||
@ -290,10 +294,11 @@ bool QTestResult::verify(bool statement, const char *statementStr,
|
||||
QTestLog::info(msg, file, line);
|
||||
}
|
||||
|
||||
if (!statement && !QTest::expectFailMode)
|
||||
qsnprintf(msg, 1024, "'%s' returned FALSE. (%s)", statementStr, description ? description : "");
|
||||
else if (statement && QTest::expectFailMode)
|
||||
qsnprintf(msg, 1024, "'%s' returned TRUE unexpectedly. (%s)", statementStr, description ? description : "");
|
||||
if (statement == !!QTest::expectFailMode) {
|
||||
qsnprintf(msg, 1024,
|
||||
statement ? "'%s' returned TRUE unexpectedly. (%s)" : "'%s' returned FALSE. (%s)",
|
||||
statementStr, description ? description : "");
|
||||
}
|
||||
|
||||
return checkStatement(statement, msg, file, line);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtTest module of the Qt Toolkit.
|
||||
@ -123,6 +123,7 @@ public:
|
||||
static void addSkip(const char *message, const char *file, int line);
|
||||
static bool expectFail(const char *dataIndex, const char *comment,
|
||||
QTest::TestFailMode mode, const char *file, int line);
|
||||
static void fail(const char *message, const char *file, int line);
|
||||
static bool verify(bool statement, const char *statementStr, const char *extraInfo,
|
||||
const char *file, int line);
|
||||
static void setSkipCurrentTest(bool value);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Copyright (C) 2017 Intel Corporation.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
@ -442,7 +442,6 @@ void tst_QUdpSocket::broadcasting()
|
||||
QEXPECT_FAIL("",
|
||||
"Broadcasting to 255.255.255.255 does not work on FreeBSD",
|
||||
Abort);
|
||||
QVERIFY(false); // seems that QFAIL() doesn't respect the QEXPECT_FAIL() :/
|
||||
#endif
|
||||
QFAIL("Network operation timed out");
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
@ -88,7 +88,7 @@ void tst_Xunit::testFunc5()
|
||||
void tst_Xunit::testFunc6()
|
||||
{
|
||||
QEXPECT_FAIL("", "this failure is also expected", Abort);
|
||||
QVERIFY(false);
|
||||
QFAIL("This is a deliberate failure");
|
||||
}
|
||||
|
||||
void tst_Xunit::testFunc7()
|
||||
|
Loading…
Reference in New Issue
Block a user