summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2021-06-11 14:33:41 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2021-06-15 18:55:16 +0200
commita93a9ea915332196821db9c197856955bedbfd26 (patch)
tree5f24f501522716fd26b79658669894b998be5175 /src/testlib
parentb62fcccb1560698dddbf5167813ae1dc044fc35b (diff)
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>
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/qtestcase.cpp6
-rw-r--r--src/testlib/qtestcase.h4
-rw-r--r--src/testlib/qtestresult.cpp17
-rw-r--r--src/testlib/qtestresult_p.h3
4 files changed, 18 insertions, 12 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index c08ad58d75..eca5bbb033 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -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
diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h
index 25385b327a..158fce4e3d 100644
--- a/src/testlib/qtestcase.h
+++ b/src/testlib/qtestcase.h
@@ -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);
diff --git a/src/testlib/qtestresult.cpp b/src/testlib/qtestresult.cpp
index ee038d3704..96c7af29d5 100644
--- a/src/testlib/qtestresult.cpp
+++ b/src/testlib/qtestresult.cpp
@@ -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);
}
diff --git a/src/testlib/qtestresult_p.h b/src/testlib/qtestresult_p.h
index 4da66885df..05ae764722 100644
--- a/src/testlib/qtestresult_p.h
+++ b/src/testlib/qtestresult_p.h
@@ -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);