summaryrefslogtreecommitdiffstats
path: root/tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp')
-rw-r--r--tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp136
1 files changed, 81 insertions, 55 deletions
diff --git a/tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp b/tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp
index a419c13160..d59b6244c1 100644
--- a/tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp
+++ b/tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp
@@ -1,30 +1,8 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QTEST_THROW_ON_FAILURE // fails ### investigate
+#undef QTEST_THROW_ON_SKIP // fails ### investigate
#include <QtCore/QCoreApplication>
#include <QTest>
@@ -35,74 +13,122 @@ class tst_Blacklisted : public QObject
Q_OBJECT
private slots:
+ void init();
+ void cleanupTestCase();
void pass();
void skip();
void fail();
void xfail();
+ void multiSkip();
+ void multiFail();
+ void xfailContinueSkip();
+ void xfailContinueFail();
void xpass();
+ void xpassContinueSkip();
+ void xpassContinueFail();
- // This test function must be last, as it calls qFatal().
- void messages();
+private:
+ int casesTested = 2;
+ // What the totals line's numbers *should* be:
+ int passed = 2, skipped = 0, blacklisted = 0;
+ // Total and passed get {init,cleanup}TestCase() in addition to the actual tests.
};
-// All the tests below except pass() have been blacklisted in blacklisted/BLACKLIST
-// Contrast with ../silent/, for the same tests without blacklisting but with -silent
+void tst_Blacklisted::init()
+{
+ ++casesTested;
+}
+
+void tst_Blacklisted::cleanupTestCase()
+{
+ qDebug("Totals should add up to %d: %d passed, 0 failed, %d skipped, %d blacklisted",
+ casesTested, passed, skipped, blacklisted);
+}
+
+// All the tests below have been blacklisted in blacklisted/BLACKLIST
void tst_Blacklisted::pass()
{
+ ++blacklisted;
+ qDebug("This test should BPASS");
QVERIFY(true);
}
void tst_Blacklisted::skip()
{
+ ++skipped;
QSKIP("This test should SKIP");
}
void tst_Blacklisted::fail()
{
+ ++blacklisted;
QVERIFY2(false, "This test should BFAIL");
}
+void tst_Blacklisted::multiFail() // cf. ../subtest/'s similar tests
+{
+ const QTest::ThrowOnFailDisabler nothrow; // tests repeated QFAILs
+ ++blacklisted;
+ for (int i = 0; i < 10; ++i)
+ []() { QFAIL("This failure message should be repeated ten times"); }();
+ QFAIL("But this test should only contribute one to the blacklisted count");
+}
+
+void tst_Blacklisted::multiSkip()
+{
+ const QTest::ThrowOnSkipDisabler nothrow; // tests repeated QSKIPs
+ // Similar to multiFail()
+ ++skipped;
+ for (int i = 0; i < 10; ++i)
+ []() { QSKIP("This skip should be repeated ten times"); }();
+ QSKIP("But this test should only contribute one to the skip count");
+}
+
void tst_Blacklisted::xfail()
{
+ ++blacklisted;
QEXPECT_FAIL("", "This test should BXFAIL then BPASS", Abort);
QVERIFY(false);
}
+void tst_Blacklisted::xfailContinueSkip()
+{
+ ++skipped;
+ QEXPECT_FAIL("", "This test should BXFAIL then SKIP", Continue);
+ QVERIFY(false);
+ QSKIP("This skip should be seen and counted");
+}
+
+void tst_Blacklisted::xfailContinueFail()
+{
+ ++blacklisted;
+ QEXPECT_FAIL("", "This test should BXFAIL then BFAIL", Continue);
+ QVERIFY(false);
+ QFAIL("This fail should be seen and counted as blacklisted");
+}
+
void tst_Blacklisted::xpass()
{
+ ++blacklisted;
QEXPECT_FAIL("", "This test should BXPASS", Abort);
QVERIFY2(true, "This test should BXPASS");
}
-#ifndef Q_OS_WIN
-#include <signal.h>
-#include <setjmp.h>
-
-static jmp_buf state;
-static void abort_handler(int)
+void tst_Blacklisted::xpassContinueSkip()
{
- longjmp(state, 1);
+ ++blacklisted;
+ QEXPECT_FAIL("", "This test should BXPASS then SKIP", Continue);
+ QVERIFY2(true, "This test should BXPASS then SKIP");
+ QSKIP("This skip should be seen but not counted");
}
-#endif
-void tst_Blacklisted::messages()
+void tst_Blacklisted::xpassContinueFail()
{
- qWarning("This is a warning that should not appear in silent test output");
- QWARN("This is an internal testlib warning that should not appear in silent test output");
- qDebug("This is a debug message that should not appear in silent test output");
- qCritical("This is a critical message that should not appear in silent test output");
- qInfo("This is an info message that should not appear in silent test output");
- QTestLog::info("This is an internal testlib info message that should not appear in silent test output", __FILE__, __LINE__);
-
-#ifndef Q_OS_WIN
- // We're testing qFatal, but we don't want to actually std::abort() !
- auto prior = signal(SIGABRT, abort_handler);
- if (setjmp(state))
- signal(SIGABRT, prior);
- else
-#endif
- qFatal("This is a fatal error message that should still appear in silent test output");
+ ++blacklisted;
+ QEXPECT_FAIL("", "This test should BXPASS then BFAIL", Continue);
+ QVERIFY2(true, "This test should BXPASS then BFAIL");
+ QFAIL("This fail should be seen and not counted (due to prior XPASS)");
}
QTEST_MAIN(tst_Blacklisted)