diff options
Diffstat (limited to 'tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp')
-rw-r--r-- | tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp | 136 |
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) |